mpv-player

mpv-player/mpv

C No license Media License not recognized by GitHub

🎥 Command line media player

35.9k stars
3.4k forks
active
GitHub +81 / week

35.9k

Stars

3.4k

Forks

1.1k

Open issues

30

Contributors

AI Analysis

mpv is a free, command-line media player that supports a wide variety of formats, codecs, and subtitle types across Linux, Windows, and macOS. It serves users who prefer keyboard-driven, scriptable media playback with advanced rendering and hardware decoding options. It is not a GUI application for casual users but rather a power-user tool for those comfortable with terminal interfaces and configuration files.

Media Application Discovery value: 3/10
Documentation 8/10
Activity 9/10
Community 9/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

media-playback command-line video-rendering codec-support cross-platform
Actively maintained Well documented Popular Niche/specialized use case Production ready
Deep Analysis · Based on README and public signals
3w ago

mpv: A mature, extensible command-line media player with a 13-year track record and a thriving scripting ecosystem

mpv is a free, open-source command-line media player built on FFmpeg and libplacebo, targeting power users, developers, and system integrators who need precise playback control, scriptability, and high-quality video rendering. It is widely embedded as a backend in third-party players (IINA on macOS, mpv.net on Windows, Celluloid on Linux) and used directly by Linux enthusiasts, home theater PC operators, and developers building media tooling. Its scripting API, configurable shaders, and accurate subtitle rendering make it a reference-quality player for advanced use cases.

Origin

Forked from MPlayer/mplayer2 in 2012 after development stagnated, mpv was rebuilt to modernize the codebase, adopt Wayland/OpenGL rendering, and introduce a Lua/JavaScript scripting API. It has been continuously developed since, accumulating a large community and ecosystem.

Growth

Growth has been steady rather than viral. mpv benefits from being the backend of popular GUI frontends, which multiplies its effective user base far beyond direct CLI users. The thriving user-scripts wiki and Lua/JavaScript API have created a self-reinforcing ecosystem. Stars accumulate slowly (~45/week as of mid-2026), consistent with a mature, stable project rather than a trending one.

In production

mpv is packaged in all major Linux distributions (Debian, Fedora, Arch, Ubuntu) and available via Homebrew on macOS. It serves as the backend for IINA (45k stars), mpv.net (5k stars), and Celluloid, collectively representing hundreds of thousands of end-user installs. It is referenced in media automation tooling, home theater PC setups (e.g., Kodi plugin alternatives), and academic/research media pipelines. Adoption is well-documented across forums, distro packages, and downstream projects.

Code analysis
Architecture

Likely a monolithic-core design in C with clearly separated subsystems: demuxing (via FFmpeg), video output (via libplacebo/OpenGL/Vulkan), audio output (ALSA/PulseAudio/CoreAudio etc.), subtitle rendering (libass), and an IPC/scripting layer. Appears to use a plugin-style video output and audio output architecture allowing runtime selection. Build system uses Meson. libplacebo integration handles GPU-accelerated video filtering and scaling via shaders.

Tests

not documented in README

Maintenance

Last push was 2026-06-18, two days before evaluation date, indicating very active maintenance. The project has been continuously pushed for 13+ years. The README documents a clear release cycle (once or twice yearly), interface/API changelogs, and structured contribution process — all signs of a well-managed long-lived project.

Honest verdict

ADOPT IF: you need a scriptable, high-quality media player for CLI or automation use, want to embed a player backend into a larger application, or require precise control over video rendering, subtitle handling, and playback behavior. AVOID IF: you need a user-friendly GUI out of the box for non-technical users, or require guaranteed support for legacy hardware/OS environments. MONITOR IF: you are building a GUI player on another platform (Android, smart TV) and considering mpv as a backend — libmpv embedding is maturing but platform support varies.

Independent dimensions

Mainstream potential

4/10

Technical importance

9/10

Adoption evidence

8/10

Risks
  • Steep learning curve for new users: configuration is file-based and CLI-driven, which is a barrier for non-technical audiences.
  • No bundled GUI: end users expecting a traditional media player experience must rely on third-party frontends, which may lag behind core updates.
  • Dependency complexity: compiling from source requires FFmpeg, libplacebo, libass, and several platform libraries, which can be difficult on non-Linux systems.
  • Security patching is ad-hoc: the release cycle (once or twice yearly) means security fixes may not reach stable releases promptly; the project explicitly does not backport fixes to older releases.
  • GPU and driver sensitivity: shader-based rendering can expose GPU driver bugs, and low-power or integrated GPUs may produce suboptimal results without manual tuning.
Prediction

mpv is likely to remain the reference-quality open-source media player for power users and a preferred backend for GUI frontends indefinitely. Mainstream adoption growth will remain modest but the project shows no signs of declining — its ecosystem is self-sustaining.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

C
87.7%
Lua
6%
Swift
2.4%
Meson
1.1%
Python
0.8%
Objective-C
0.6%
Shell
0.4%
JavaScript
0.4%

Information

Website
https://mpv.io
Language
C
License
NOASSERTION
Last updated
15h ago
Created
167mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

mpvnet-player

mpvnet-player/mpv.net

mpv.net is a Windows media player that wraps the popular cross-platform mpv...

5.2k C# Media
mpv-android

mpv-android/mpv-android

mpv-android is a feature-rich video player application for Android that brings...

3.4k Kotlin Media
marlboro-advance

marlboro-advance/mpvEx

mpvExtended is a modern Android video player built on libmpv with Material3 UI,...

2.3k Kotlin Media
zaps166

zaps166/QMPlay2

QMPlay2 is a cross-platform video and audio player built with Qt that supports...

1.2k C++ Media
smplayer-dev

smplayer-dev/smplayer

SMPlayer is a free, open-source media player for Windows, Linux, and macOS that...

1k C++ Media
vs. alternatives
VLC (videolan/vlc)

VLC targets mainstream users with a GUI-first, batteries-included approach and broader hardware compatibility. mpv prioritizes rendering quality, scriptability, and CLI control. They serve different primary audiences, though both handle most formats. VLC is more approachable; mpv is more powerful for advanced users.

FFmpeg (FFmpeg/FFmpeg)

FFmpeg is a codec/muxing library and batch processing tool, not a media player. mpv uses FFmpeg internally. They are complementary rather than competing — mpv is the playback layer on top of FFmpeg's decoding.

IINA (iina/iina)

IINA is a macOS-native GUI built on top of mpv. It is not a competitor but a consumer of mpv. Users who want a polished macOS GUI with mpv's rendering quality choose IINA; power users who want CLI control use mpv directly.

mpv.net (mpvnet-player/mpv.net)

Similar relationship to IINA: a Windows GUI shell around mpv's core. Demonstrates mpv's architectural value as an embeddable backend rather than just a standalone player.

MPC-BE (Aleksoid1978/MPC-BE)

MPC-BE is a Windows-only GUI player with its own rendering pipeline. More approachable on Windows for non-technical users. mpv offers better cross-platform support, shader customization, and scripting depth.