explaingit

mpv-player/mpv

Analysis updated 2026-06-20

35,112CAudience · developerComplexity · 4/5Setup · hard

TLDR

mpv is a minimalist open-source command-line video and audio player built on FFmpeg that supports virtually every file format, uses GPU shaders for high-quality upscaling, and exposes a Lua scripting API and C client library for embedding and automation.

Mindmap

mindmap
  root((mpv))
    Playback
      All file formats
      Audio and video
      Subtitle formats
    Video Quality
      GPU shader upscaling
      Hardware decoding
      High quality pipeline
    Extensibility
      Lua scripting
      C client API
      Config profiles
    Use Cases
      Command-line playback
      Embedded player
      Power user control
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Play any video or audio format from the command line with high-quality GPU-accelerated rendering and configurable upscaling shaders.

USE CASE 2

Write a Lua plugin to automate mpv playback behavior, such as auto-skipping intros, saving resume position, or controlling playback from external events.

USE CASE 3

Embed mpv into a desktop application using its C client API to build a custom media player with precise playback control.

USE CASE 4

Use hardware-accelerated decoding with NVDEC or VAAPI to play 4K HEVC or AV1 video with minimal CPU load.

What is it built with?

CFFmpegMesonLualibplacebo

How does it compare?

mpv-player/mpvjqlang/jqpbatard/rufus
Stars35,11234,62735,945
LanguageCCC
Setup difficultyhardeasyeasy
Complexity4/52/51/5
Audiencedeveloperdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Building from source requires Meson, FFmpeg, and libplacebo, pre-built binaries are available for Linux, Windows, and macOS to skip compilation.

In plain English

mpv is a free, open-source command-line media player for playing video and audio files. It is the successor to the long-running MPlayer project and emphasizes correctness, quality output, and a minimalist design philosophy. Rather than providing a graphical media library browser like VLC or Windows Media Player, mpv is focused purely on playback, you tell it what file to play, and it plays it. The player supports an extremely wide range of file formats, codecs, and container types because it is built on top of FFmpeg, the industry-standard open-source multimedia decoding library. This means it can handle virtually any video or audio format you throw at it, including modern formats like AV1, HEVC, VP9, and Opus, as well as legacy formats. Subtitle support covers most formats including ASS/SSA styled subtitles, SRT, and PGS image-based subtitles. A key feature is mpv's video rendering pipeline: it uses GPU shaders (small programs that run on the graphics card) for upscaling and post-processing, which produces noticeably higher quality output than players that use fixed GPU hardware functions. Hardware-accelerated decoding via NVDEC (Nvidia), VAAPI (Linux), and other APIs is available for reducing CPU load on high-resolution video. A Lua scripting API lets advanced users write plugins and automate behavior. You would use mpv when you want a fast, high-quality media player that works well from the command line or can be embedded into other applications via its client API. It is particularly popular among developers, power users, and anyone who wants precise control over playback options and video quality. The tech stack is C, building with Meson and linking against FFmpeg and libplacebo. It runs on Linux, Windows 10+, and macOS 10.15+.

Copy-paste prompts

Prompt 1
I want to play a 4K HEVC video in mpv with NVDEC hardware decoding enabled for reduced CPU usage. What command-line flags and mpv.conf settings do I need?
Prompt 2
Write a Lua script for mpv that automatically pauses playback when the mpv window loses focus and resumes when it regains focus.
Prompt 3
I want to embed mpv into a Python desktop application as a video widget. Show me how to use the python-mpv binding to create a player, load a file, and control playback programmatically.
Prompt 4
How do I configure mpv's video upscaling to use the ewa_lanczossharp algorithm when playing 1080p content on a 4K display? Show me the profile and vo settings to add to mpv.conf.

Frequently asked questions

What is mpv?

mpv is a minimalist open-source command-line video and audio player built on FFmpeg that supports virtually every file format, uses GPU shaders for high-quality upscaling, and exposes a Lua scripting API and C client library for embedding and automation.

What language is mpv written in?

Mainly C. The stack also includes C, FFmpeg, Meson.

How hard is mpv to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is mpv for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub mpv-player on gitmyhub

Verify against the repo before relying on details.