Skip to main content
Audio output drivers are interfaces to different audio output facilities. mpv auto-selects the best available driver, but you can override it with --ao.
mpv --ao=<driver> audio.flac
Pass a comma-separated priority list to fall back automatically:
mpv --ao=pipewire,pulse,alsa audio.flac
Run mpv --ao=help to list all compiled-in audio output drivers sorted by autoprobe order.
The default audio output driver is subject to change and must not be relied upon. Specify the driver explicitly if a particular AO is required.

Platform drivers

alsa

ALSA audio output driver.
mpv --ao=alsa audio.flac
OptionDescription
--alsa-resample=yesEnable ALSA resampling plugin (disabled by default; some drivers report incorrect delay)
--alsa-mixer-device=<device>Mixer device for volume control (default: default)
--alsa-mixer-name=<name>Mixer element name, e.g. Master or PCM (default: Master)
--alsa-mixer-index=<number>Mixer channel index (default: 0)
--alsa-non-interleavedAllow non-interleaved audio output (disabled by default due to broken plugins)
--alsa-ignore-chmapDon’t read or set channel map; pass audio as-is
--alsa-buffer-time=<microseconds>Requested buffer time (0 = use ALSA default)
--alsa-periods=<number>Number of ALSA periods requested
To get multichannel/surround audio, use --audio-channels=auto. The default auto-safe explicitly rejects multichannel output because ALSA has no way to detect supported channel layouts.

pulse (PulseAudio)

mpv --ao=pulse audio.flac
OptionDescription
--pulse-host=<host>Host to connect to (empty = local connection)
--pulse-buffer=<1-2000|native>Audio buffer size in milliseconds; native lets the server decide
--pulse-latency-hacks=<yes|no>Enable latency workarounds for PulseAudio timing bugs (default: yes)
--pulse-allow-suspended=<yes|no>Allow playback even if the sink is suspended (default: no)

pipewire

mpv --ao=pipewire audio.flac
OptionDescription
--pipewire-buffer=<1-2000|native>Audio buffer size in milliseconds
--pipewire-remote=<remote>PipeWire remote daemon name (default: pipewire-0)
--pipewire-volume-mode=<channel|global>Whether ao-volume controls channel or global volume (default: channel)

jack (JACK Audio Connection Kit)

mpv --ao=jack audio.flac
OptionDescription
--jack-port=<name>Connect to ports with this name (default: physical ports)
--jack-name=<client>JACK client name (default: mpv)
--jack-autostart=<yes|no>Auto-start jackd if needed (default: no; tends to be unreliable)
--jack-connect=<yes|no>Auto-connect to output ports (default: yes)
--jack-std-channel-layout=<waveext|any>Channel layout standard: waveext (WAVE_FORMAT_EXTENSIBLE order, default) or any

Audio channel layout

Control the output channel layout with --audio-channels:
# Accept any channel layout the audio output supports
mpv --audio-channels=auto audio.flac

# Safe subset only (default)
mpv --audio-channels=auto-safe audio.flac

# Force stereo
mpv --audio-channels=stereo audio.flac

ReplayGain / volume normalization

Adjust volume based on ReplayGain metadata stored in the file:
# Apply track gain
mpv --replaygain=track audio.flac

# Apply album gain (falls back to track gain if absent)
mpv --replaygain=album audio.flac

# Disable (default)
mpv --replaygain=no audio.flac
Additional ReplayGain options:
OptionDescription
--replaygain-preamp=<db>Pre-amplification in dB applied to the selected gain (default: 0)
--replaygain-clip=<yes|no>Allow clipping (default: no; mpv auto-lowers gain to prevent clipping)
--replaygain-fallback=<db>Gain in dB to apply when no ReplayGain tags are present

Compressed audio passthrough (S/PDIF / HDMI)

Pass compressed audio formats directly to a receiver via S/PDIF or HDMI:
# Pass through AC-3 and DTS
mpv --audio-spdif=ac3,dts audio.mkv

# Pass through Dolby TrueHD and E-AC-3
mpv --audio-spdif=truehd,eac3 audio.mkv
Supported codecs: ac3, dts, dts-hd, eac3, truehd.
HDMI supports uncompressed multichannel PCM, and mpv supports lossless DTS-HD decoding via FFmpeg’s DCA decoder. Passthrough is rarely necessary on modern systems.

Exclusive output mode

Lock the audio device so only mpv can use it (lower latency, no mixing):
mpv --audio-exclusive=yes audio.flac
Supported by wasapi, coreaudio, pipewire, and audiounit.

Selecting a specific audio device

# List available devices
mpv --audio-device=help

# Use a specific ALSA device
mpv --audio-device=alsa/dmix:default audio.flac

# Use a specific WASAPI device
mpv --audio-device=wasapi/Speakers audio.flac

Build docs developers (and LLMs) love