🎥 Command line media player
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.
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
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.
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 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.
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.
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.
not documented in README
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.
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
- 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.
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.
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
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
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
mpv hangs when playing livestream with vulkan, `--profile=high-quality` and `gpu-next`
custom fps limiter/override for frame-step play/mute
Reproducible access violation (NULL+0x2C read) on worker thread during live DASH playback with frequent Period switching
[D3D11VA] Request to enable DXVA HEVC YUV444 support
MPV on Vulkan becomes transparent when Nvidia overlay notification shows up
Top contributors
Similar repos
mpvnet-player/mpv.net
mpv.net is a Windows media player that wraps the popular cross-platform mpv...
mpv-android/mpv-android
mpv-android is a feature-rich video player application for Android that brings...
marlboro-advance/mpvEx
mpvExtended is a modern Android video player built on libmpv with Material3 UI,...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
35.9k | +81 | C | 8/10 | 15h ago |
|
|
5.2k | — | C# | 8/10 | 5mo ago |
|
|
3.4k | — | Kotlin | 7/10 | 1w ago |
|
|
2.3k | — | Kotlin | 7/10 | 4mo ago |
|
|
1.2k | — | C++ | 7/10 | 2d ago |
|
|
1k | — | C++ | 6/10 | 19h ago |
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 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 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.
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 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.
