What is mpv?
mpv is descended from MPlayer and mplayer2. Where those projects focused on compatibility, mpv focuses on correctness, modern GPU rendering, and a clean, scriptable interface. It exposes almost everything through options, properties, and a JSON IPC socket, making it as useful as a headless playback engine as it is as a desktop media player. mpv does not ship a traditional GUI. Instead it renders an on-screen controller (OSC) over the video window and gives you a keyboard-driven interface documented in the keyboard controls page.Key capabilities
Wide format support
Plays virtually any video or audio format via FFmpeg — MKV, MP4, AVI, FLAC, Opus, AAC, and hundreds more. Reads from local files, HTTP/HTTPS URLs, HLS and DASH streams, and stdin.
GPU-accelerated rendering
Uses shader-based video rendering through libplacebo and the
gpu-next video output driver. Supports high-quality scaling, HDR tone-mapping, and frame interpolation without relying on fixed GPU hardware functions.Lua and JavaScript scripting
Extend mpv with scripts dropped into
~/.config/mpv/scripts/. Scripts can bind keys, query and set player properties, and react to playback events via a rich API.libmpv embedding
Embed mpv as a playback backend in your own application using the libmpv C API. Many third-party frontends and media center applications are built on top of libmpv.
JSON IPC
Control a running mpv instance from any language through a Unix socket or named pipe. Send commands, query properties, and subscribe to events using a simple JSON protocol.
Hardware decoding
Optionally offload video decoding to the GPU using VAAPI, VDPAU, NVDEC (Linux), VideoToolbox (macOS), or D3D11VA (Windows) via the
--hwdec option.Supported platforms
| Platform | Minimum version |
|---|---|
| Linux | A not-too-ancient distribution (latest releases are actively supported) |
| Windows | Windows 10 1607 or later |
| macOS | macOS 10.15 (Catalina) or later |
Brief history
mpv began as a fork of mplayer2, which was itself a fork of the original MPlayer project. The project moved away from MPlayer’s legacy codebase to build a cleaner architecture with modern audio/video output, a configurable input layer, and the libmpv embedding API. The first mpv release was cut in 2013. Releases follow a roughly biannual cycle, with each0.X.0 release cut from the current development state.
Explore the documentation
Installation
Install mpv on Linux, macOS, or Windows using your package manager or official builds.
Quickstart
Play your first file and learn the essential controls in minutes.
Configuration
Persist your settings in
mpv.conf and customize every aspect of playback.Scripting
Automate mpv with Lua or JavaScript scripts and the IPC protocol.
Video output
Configure the GPU-accelerated video output pipeline and rendering options.
libmpv embedding
Use mpv as a library inside your own application via the C API.