Skip to main content
mpv is a free and open-source media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types, and runs on Linux, macOS, and Windows.

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

PlatformMinimum version
LinuxA not-too-ancient distribution (latest releases are actively supported)
WindowsWindows 10 1607 or later
macOSmacOS 10.15 (Catalina) or later
mpv does not go out of its way to break on older hardware or unsupported operating systems, but development does not target them. If things work on older setups, consider it a bonus rather than a guarantee.

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 each 0.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.

Build docs developers (and LLMs) love