mpv PulseAudio Volume Behavior Changed: How to Fix It

  • Separate mpv software gain from PulseAudio per-app volume controls.
  • Check pavucontrol, PipeWire compatibility, device selection, profiles, and scripts.
  • Use clean commands and logs to isolate the exact override.

If mpv volume controls suddenly affect the wrong level, stop changing PulseAudio per-application volume, fail to remember a previous level, or behave differently after an operating system or audio-stack update, the cause is usually one of four things: mpv is applying software gain, the PulseAudio stream level is being managed externally, mpv selected a different audio device, or PipeWire's PulseAudio compatibility layer is now handling the stream. Config files, input bindings, profiles, and scripts can also modify volume without making the source obvious. The safest way to fix the problem is to reproduce it with a clean mpv process, identify which volume layer is changing, and restore only the setting responsible.

Desktop audio troubleshooting setup with mpv, a terminal, and volume controls.

1. Confirm the Symptom With a Minimal Clean mpv Command

Begin with a local media file that has a known-good audio track. A local file removes yt-dlp, network access, redirects, playlist parsing, and streaming-server behavior from the test. Open a terminal and run mpv without loading your normal configuration:

mpv --no-config --audio-display=no "/path/to/test-file.mkv"

On Windows, use the correct drive and path syntax:

mpv.exe --no-config --audio-display=no "C:\Media\test-file.mkv"

While the file plays, use mpv's default volume keys. By default, the number keys commonly used for volume are 9 and 0, although packaged builds or user configurations can differ. Observe mpv's on-screen volume indicator and, on Linux, watch the application's playback stream in the desktop sound panel or pavucontrol.

Record which of these symptoms occurs:

  • mpv's on-screen percentage changes, but the PulseAudio per-app slider does not move.
  • The PulseAudio slider moves, but the perceived loudness does not change as expected.
  • Volume jumps when a new file, playlist entry, or stream begins.
  • mpv appears under a different output device than before.
  • Volume can exceed 100 percent and becomes distorted.
  • The volume keys do nothing or invoke an unrelated command.

If the clean command produces predictable volume changes and stable sound, stop investigating PulseAudio itself. Your hardware, media file, and basic audio path are working. The difference is likely in your mpv configuration, a profile, an input binding, or a script. If the clean test still fails, continue with the backend and device checks.

1.1 Separate mpv Volume From System Volume

There can be several gain controls in the path: mpv's volume value, the PulseAudio or PipeWire per-application stream level, the output-device level, and the physical amplifier or speaker control. Depending on the active mpv version, output module, operating system, and configuration, changing mpv's volume may not produce the old PulseAudio slider behavior you remember.

Do not assume that an unchanged desktop slider means mpv volume is broken. If mpv's displayed percentage changes and audible loudness changes smoothly, mpv is successfully controlling its own gain. Stop changing settings unless you specifically need mpv's keys to manipulate the PulseAudio stream level.

2. Check the Options That Directly Affect Volume Behavior

2.1 Inspect Volume and Maximum Volume Settings

Search your mpv configuration for volume-related options. Typical locations include ~/.config/mpv/mpv.conf on Linux and macOS, and an mpv configuration directory associated with the executable or user profile on Windows. The exact location can depend on how mpv was installed.

Look for entries such as:

volume=70
volume-max=100
mute=yes

A high volume-max permits gain above the normal reference level. That can be useful for quiet material, but it can also cause clipping or make the control feel different from a system mixer restricted to 100 percent. For a conservative test, use:

volume=100
volume-max=100
mute=no

Test these options on the command line before saving them:

mpv --no-config --volume=100 --volume-max=100 --mute=no "/path/to/test-file.mkv"

Success means the file starts unmuted, the displayed volume remains within the expected range, and volume adjustments sound progressive rather than jumping or distorting. Once that happens, stop adding volume options.

2.2 Treat Old softvol Advice Carefully

Older forum posts may recommend enabling or disabling softvol to switch between software amplification and a hardware or server mixer. Do not copy an old option blindly. mpv's option set and audio architecture have evolved, and an option mentioned in an old guide may be obsolete or unavailable in your installed build.

Ask your own executable whether it recognizes the option. On Linux or macOS, you can use:

mpv --list-options | grep -i softvol

On Windows PowerShell, use:

mpv.exe --list-options | Select-String -Pattern softvol

If no supported option appears, remove old softvol lines instead of trying several guessed values. Modern troubleshooting should focus on the observable mpv volume value, the selected audio output, and the PulseAudio or PipeWire stream. Success means mpv starts without an unknown-option error and volume still changes audibly.

2.3 Check input.conf for Reassigned Volume Keys

Open input.conf and search for volume, add volume, set volume, cycle mute, and the specific keys you press. A binding such as the following changes volume by a fixed amount:

9 add volume -2
0 add volume 2

A script binding may instead call an external mixer utility, send an IPC command, or set an absolute value. Temporarily rename only input.conf, or test with --no-input-default-bindings while supplying a controlled binding through a temporary file. Do not delete the entire configuration folder.

If default keys work under --no-config but not with your normal setup, the binding or a script is responsible. Correct that one line and stop troubleshooting the audio server.

2.4 Review Profiles and Scripts

Profiles can apply settings only to particular protocols, resolutions, codecs, displays, or file types. This can make local files work while online URLs or HDR videos behave differently. Search mpv.conf for profile sections and conditional profiles that set volume, volume-max, mute, audio-device, or ao.

Also inspect scripts that normalize audio, save playback properties, restore volume, integrate with desktop controls, or respond to file-loaded events. Disable one suspected script at a time by moving only that script out of the scripts directory. Restart mpv between tests because scripts are loaded when the player starts.

Subtitle settings, shaders, HDR tone mapping, screenshot options, and hardware decoding normally do not control PulseAudio volume. They matter only when a script or profile groups them with audio options, or when playback performance is so poor that audio drops are mistaken for volume changes. Avoid rewriting unrelated video settings when ordinary audio files already reproduce the symptom.

Layered audio path connecting mpv through a sound server to speakers, headphones, and HDMI.

3. Verify PulseAudio, PipeWire, and Audio-Device Selection

3.1 Inspect the Stream in pavucontrol

On Linux, start playback first and then open pavucontrol. The Playback tab normally shows active application streams. Find mpv and check its volume, mute state, and destination device. A stream may not appear until audio is actively playing.

  • Confirm that mpv is not muted.
  • Set the per-app level to a known value such as 100 percent for testing.
  • Confirm that the stream is routed to the intended speakers, headphones, HDMI output, or audio interface.
  • Check the Output Devices tab for a muted device or unexpected profile.
  • Avoid amplification above 100 percent until ordinary control works.

If changing mpv's volume alters audible loudness but not the pavucontrol slider, mpv may be applying gain separately from the server's per-app control. That can be valid behavior. If your goal is merely reliable playback volume, success has already been reached. If you require server-side control, use pavucontrol or a trusted desktop mixer rather than relying on historical behavior from an older setup.

3.2 Determine Whether PipeWire Is Providing PulseAudio Compatibility

Many Linux desktops use PipeWire while continuing to accept applications through a PulseAudio-compatible protocol. In that arrangement, mpv may report or use a PulseAudio output path even though PipeWire manages the actual graph and devices. This is not automatically an error.

Check the server with:

pactl info

Review the server name and default sink. You can also inspect available sinks:

pactl list short sinks

If PipeWire's PulseAudio compatibility service is active, continue using PulseAudio tools such as pactl and pavucontrol for basic stream checks. Do not install a second competing sound server merely because the implementation changed. Success means mpv creates one stable playback stream, it is routed to the correct sink, and its level can be controlled predictably.

3.3 List and Test mpv Audio Devices

Ask mpv to list the audio devices visible to it:

mpv --audio-device=help

Then test a device using the exact identifier printed by your build:

mpv --no-config --audio-device="DEVICE_IDENTIFIER" "/path/to/test-file.mkv"

Do not guess an identifier from another computer or an old guide. Device names can change after reconnecting USB hardware, changing HDMI displays, switching sound-server implementations, or updating operating-system settings.

If explicitly choosing the device restores normal behavior, add that exact audio-device value to mpv.conf. If the default device works correctly, leave device selection automatic so the operating system can handle headphones and display changes.

3.4 Test the Audio Output Driver Without Forcing It Permanently

Use mpv's reported output list rather than assuming that PulseAudio is available on every platform:

mpv --ao=help

On a Linux system exposing a PulseAudio-compatible server, a focused temporary test may be:

mpv --no-config --ao=pulse "/path/to/test-file.mkv"

Windows and macOS generally use their native audio output systems rather than PulseAudio. If you are using a custom PulseAudio server, virtual machine, compatibility environment, or remote audio connection on those platforms, verify that layer separately. Otherwise, select an output supported natively by the installed mpv build.

Success means mpv opens the audio output without fallback errors and plays through the intended device. Do not force ao=pulse permanently if automatic selection already works.

4. Use mpv Diagnostics to Find Hidden Overrides

4.1 Capture a Focused Log

Run the failing case with a log file and more detailed messages:

mpv --msg-level=all=v --log-file=mpv-volume.log "/path/to/test-file.mkv"

Inspect the log for configuration files being loaded, scripts, selected profiles, audio output initialization, device selection, unknown options, and fallback messages. Logs can contain local paths and media URLs, so remove private tokens or filenames before sharing them.

For a comparison, create a second log with --no-config. The important difference is often a loaded script, an applied profile, or a forced audio device. Once the difference is identified, change only that component.

4.2 Inspect Profiles and Runtime Properties

If a named profile is involved, use:

mpv --show-profile=PROFILE_NAME

This displays the options associated with that profile. Check whether it changes volume, mute, audio output, or device selection. Profile names are user-defined, so replace the placeholder with a real name from your configuration.

mpv's statistics overlay can help distinguish audio-output trouble from severe decoding or rendering problems. Use the configured stats key, commonly i, while playing. If a high-bitrate file drops frames but a small local audio file shows the same volume symptom, the volume issue is not caused by HDR, shaders, or hardware decoding.

4.3 Verify the Selected Track

Use mpv's track list or on-screen track controls to confirm that the expected audio track is active. A commentary track, stereo downmix, quiet alternate language track, or audio-description track can sound like a volume failure even when gain control works normally.

Test explicit track selection only after viewing the available track IDs. If changing to the intended track restores expected loudness and mpv's volume control remains smooth, stop. PulseAudio was not the cause.

5. Run a Clean Temporary Test Before Editing Multiple Files

Use a small sequence that changes one variable at a time:

  1. Play a known-good local file with --no-config.
  2. Confirm mpv's displayed volume and audible response.
  3. Check the live stream and output device in pavucontrol.
  4. List devices with --audio-device=help.
  5. Test the correct device identifier temporarily.
  6. Run normally and compare the result.
  7. Re-enable suspected profiles or scripts one at a time.

Do not begin with an online URL. yt-dlp affects URL extraction and media selection, but it does not normally redefine PulseAudio volume control. A stream can contain a quieter audio track or switch formats between playlist entries, so reproduce the behavior with a local file before updating yt-dlp or investigating network access.

Likewise, file paths and shell quoting matter when mpv fails to open media, but they do not explain a working stream whose volume slider behaves differently. Fix quoting only when the log reports an invalid path or option parsing problem.

A successful clean test has four characteristics: mpv starts without unknown-option errors, the intended track reaches the intended device, volume changes are audible and gradual, and restarting the same test does not unexpectedly change routing. When all four are true, stop changing backend settings and restore your customizations carefully.

6. Quick Fix Checklist

  • Run one local file with mpv --no-config.
  • Compare mpv's on-screen percentage with the pavucontrol Playback stream.
  • Set volume-max=100 temporarily to prevent unintended amplification.
  • Remove unsupported legacy softvol advice only after checking --list-options.
  • Search input.conf for reassigned volume and mute keys.
  • Inspect profiles and scripts for restored or absolute volume values.
  • Confirm the destination sink in pavucontrol.
  • Use pactl info to identify PulseAudio or PipeWire compatibility.
  • List devices with mpv --audio-device=help.
  • Test a printed device identifier before saving it in the configuration.
  • Capture normal and --no-config logs and compare them.
  • Stop once volume is stable, audible, and routed correctly.

7. Frequently Asked Questions

7.1 Why does mpv volume change while the PulseAudio slider stays still?

mpv may be changing its own gain rather than moving the sound server's per-app slider. If loudness changes correctly and does not clip, this can be normal. Use pavucontrol when you specifically want to change the server-side stream level.

7.2 Is softvol still the correct fix?

Do not assume so. The term appears frequently in older advice, but your installed mpv executable is the authority on supported options. Check mpv --list-options. Remove an obsolete setting if mpv reports it as unknown, then test volume with a clean configuration.

7.3 Why did the behavior change after switching to PipeWire?

PipeWire can provide a PulseAudio-compatible server, so applications and mixer tools may still use PulseAudio interfaces while PipeWire manages routing internally. Recheck the default sink and per-app route instead of treating the compatibility layer as a failure.

7.4 Why does mpv use the wrong speakers or HDMI output?

The operating system's default sink may have changed, or mpv may have a saved audio-device option. Inspect pavucontrol, run mpv --audio-device=help, and test the exact desired identifier. Save it only if automatic routing remains unreliable.

7.5 Can HDR, subtitles, shaders, or hardware decoding cause this?

They do not normally alter PulseAudio volume. They can contribute to stuttering, delayed playback, or profile activation, and a profile may also contain audio settings. Test a simple local file with --no-config before changing video options.

7.6 Why does volume reset for each playlist item or restart?

A profile, script, IPC client, saved-property mechanism, or external desktop controller may set an absolute volume during file loading. Compare normal playback with --no-config, inspect the log, and disable one suspected component at a time. When the reset disappears, fix that component rather than replacing the audio backend.


Citations

  1. Official mpv manual covering volume, configuration, profiles, logging, audio outputs, and devices. (mpv Manual)
  2. Official source repository and documentation entry point for the PulseAudio volume control application. (pavucontrol)
  3. Official PipeWire documentation for its PulseAudio-compatible protocol module. (PipeWire Documentation)
Cindy, ContentBASE creator assistant

MEET CINDY

Your ContentBASE creator assistant

Cindy helps creators find Canva templates, content ideas, and simple ways to make better social media posts faster.

Want ready-to-use templates? Claim the free Canva bundles or browse the full bundle store.