Skip to main content
Video output drivers are interfaces to different video output facilities. mpv automatically selects the best available driver, but you can override it with --vo.
mpv --vo=<driver> video.mkv
Pass a comma-separated priority list to fall back automatically:
mpv --vo=gpu-next,gpu video.mkv
Run mpv --vo=help to list all compiled-in video output drivers on your system.

gpu-next

libplacebo-based renderer. The recommended default. Generally faster and higher quality than gpu.

gpu

General-purpose GPU renderer. Mature, widely supported, with extensive options for scaling and color management.

gpu-next

gpu-next is the default video output driver. It is based on libplacebo and supports nearly the same feature set as --vo=gpu, while being faster and higher quality in most cases. Some features may be intentionally omitted or behave differently.
mpv --vo=gpu-next video.mkv
For a detailed list of differences between gpu-next and gpu, see the GPU-Next vs GPU wiki page.

gpu

gpu is a general-purpose, customizable, GPU-accelerated output driver. It supports extended scaling methods, dithering, color management, custom shaders, HDR, and more.
mpv --vo=gpu video.mkv
gpu abstracts over several graphics APIs and windowing contexts, controlled with --gpu-api and --gpu-context.

Predefined profiles

mpv --profile=fast video.mkv
Uses bilinear scaling and disables many quality-oriented features. Best for lower-end hardware.
Inspect a profile’s full settings:
mpv --show-profile=high-quality

GPU API and context

Use --gpu-api to select the graphics API and --gpu-context to select the windowing backend.
# Use Vulkan
mpv --gpu-api=vulkan video.mkv

# Use OpenGL
mpv --gpu-api=opengl video.mkv

# Use D3D11 (Windows)
mpv --gpu-api=d3d11 video.mkv
Available --gpu-context values:
ContextDescription
autoAuto-select (default)
x11X11/GLX (Linux, deprecated in favor of EGL)
x11eglX11/EGL
x11vkX11 Vulkan
waylandWayland/EGL
waylandvkWayland Vulkan
drmDRM/EGL (Linux, no desktop needed)
d3d11Direct3D 11 (Windows)
angleD3D11 via ANGLE (Windows)
winWin32/WGL (Windows)
winvkWin32 Vulkan
macvkVulkan on macOS (experimental)

GPU renderer options

These options apply to both --vo=gpu and --vo=gpu-next.

Scaling

Controls the filter used when upscaling video.
# Default: lanczos (good balance of quality and speed)
mpv --scale=lanczos video.mkv

# High quality (used by high-quality profile)
mpv --scale=ewa_lanczossharp video.mkv

# Fast (used by fast profile)
mpv --scale=bilinear video.mkv
Common values: bilinear, lanczos, ewa_lanczos, ewa_lanczossharp, ewa_lanczos4sharpest, mitchell, catmull_rom.List all available filters: mpv --scale=help
Filter for upscaling chroma information in subsampled video. Defaults to the value of --scale if unset.
mpv --cscale=ewa_lanczos video.mkv
Filter applied when downscaling video. Defaults to hermite.
mpv --dscale=mitchell video.mkv
When using convolution filters, extends the filter size during downscaling for higher quality. Enabled by default.
mpv --correct-downscaling video.mkv
Uses a sigmoidal color transform when upscaling to avoid emphasizing ringing artifacts. Enabled by default.
mpv --sigmoid-upscaling video.mkv

Color management

# Load an ICC profile for accurate color output
mpv --icc-profile=/path/to/profile.icc video.mkv

# Auto-detect the system ICC profile
mpv --icc-profile-auto video.mkv

# Enable HDR passthrough / set colorspace hint on the display
mpv --target-colorspace-hint=auto video.mkv
--target-colorspace-hint sets colorspace metadata on the display’s swapchain (useful for HDR passthrough). Supported on Wayland, D3D11, and winvk contexts. auto (default) only sets the hint when display parameters are known; yes always attempts to set it.

Dithering

# Dither to 8-bit output
mpv --dither-depth=8 video.mkv

# Auto-detect target depth (default)
mpv --dither-depth=auto video.mkv

# Disable dithering
mpv --dither-depth=no video.mkv
Explicitly setting --dither-depth to your display’s bit depth is recommended, as bit depth cannot be auto-detected on most platforms.

Other video output drivers

Produces no video output. Useful for benchmarking.
mpv --vo=null video.mkv
Uses the XVideo extension for hardware-accelerated display. Compatible but low-quality, with OSD and subtitle issues. For compatibility with old systems only.
mpv --vo=xv video.mkv
Intel VA API video output with hardware decoding support. Low quality with OSD issues. Prefer --vo=gpu --hwdec=vaapi instead.
mpv --vo=vaapi video.mkv
VDPAU display and optional hardware decoding. No reason to use this over --vo=gpu --hwdec=nvdec.
mpv --vo=vdpau video.mkv
Direct Rendering Manager output using Kernel Mode Setting. Use when no graphical environment is installed. Does not support hardware acceleration (use the drm backend for --vo=gpu for that).
mpv --vo=drm video.mkv
mpv --vo=drm --drm-connector=HDMI-A-1 video.mkv
Wayland output designed for DRM stateless or VA API hardware decoding. Avoids GPU-to-CPU copies. Requires --hwdec=auto-safe for best results.
This driver is experimental and generally lower quality than gpu/gpu-next. Standard --vo=gpu and --vo=gpu-next switch to the appropriate Wayland context automatically.
Uses the Direct3D interface. For systems without proper OpenGL drivers and where ANGLE does not perform well.
mpv --vo=direct3d video.mkv
SDL 2.0+ render output. For systems where no proper graphics drivers are available.
mpv --vo=sdl video.mkv

Build docs developers (and LLMs) love