- Test mpv cleanly without configuration or hardware decoding.
- Isolate GPU, subtitle, script, HDR, and network failures.
- Use logs and stats to confirm the exact fix.
- Confirm the Symptom With a Minimal Clean mpv Command
- Isolate the mpv Setting or Component Causing the Freeze
- Check the Operating System, Media Source, and External Tools
- Capture Useful Evidence at the Moment of the Freeze
- Run a Controlled Temporary Test
- Quick Fix Checklist
- Frequently Asked Questions
When mpv video freezes but audio continues, playback has not stopped completely. The demuxer and audio path are often still running, while video decoding, frame upload, rendering, or display presentation has stalled. Common causes include a failing hardware decoder, an unstable GPU driver, an incompatible video output backend, expensive subtitles or shaders, a script or profile, an HDR rendering problem, or a network stream that has stopped supplying usable video packets. The safest approach is to reproduce the symptom with a clean command, isolate one subsystem at a time, and stop as soon as playback remains stable.

Start with free Canva bundles
Browse the freebies page to claim ready-to-use Canva bundles, then get 25% off your first premium bundle after you sign up.
Free to claim. Canva-ready. Instant access.
1. Confirm the Symptom With a Minimal Clean mpv Command
Begin with the same file or URL that freezes, but run mpv without your normal configuration. This temporarily excludes user options, profiles, scripts, shaders, and input bindings without deleting anything.
1.1 Run mpv without configuration
Open Command Prompt, PowerShell, Terminal, or your preferred shell and run:
mpv --no-config --hwdec=no path-to-video
On Windows, use mpv.exe if that is how the executable is installed. Quote paths containing spaces. For example:
mpv --no-config --hwdec=no "C:\Videos\test video.mkv"
On Linux or macOS, a typical quoted path looks like:
mpv --no-config --hwdec=no '/home/user/Videos/test video.mkv'
This test disables both the normal configuration and hardware-accelerated decoding. It is deliberately conservative. If the video no longer freezes, the file is probably readable and the basic software decoding path works.
Success means the same problem section plays through repeatedly while video motion remains synchronized with audio. Once that happens, stop making broad system changes. Your next task is to determine whether configuration or hardware decoding caused the difference.
1.2 Verify that it is a video-only freeze
Watch what happens during the failure:
- Does audio continue at normal speed?
- Does mpv still respond to pause, seek, volume, and quit commands?
- Does seeking make the picture update once and then freeze again?
- Does the window remain visible rather than becoming unresponsive?
- Does the terminal continue reporting playback time or dropped frames?
If the application stops responding entirely, both audio and video stop, or the operating system kills mpv, you are dealing with a broader crash or hang. The troubleshooting below specifically targets a stalled video path with continuing audio.
2. Isolate the mpv Setting or Component Causing the Freeze
If the minimal command works, reintroduce features individually. Do not copy your entire configuration back into the test command. Changing several variables at once makes a temporary improvement difficult to interpret.
2.1 Test hardware decoding separately
Hardware decoding moves some video-decoding work to the GPU or a dedicated media engine. Driver, codec, bit-depth, profile, and frame-transfer limitations can cause video to stop even though audio continues.
Compare these commands:
mpv --no-config --hwdec=no path-to-videompv --no-config --hwdec=auto path-to-video
If software decoding works and --hwdec=auto freezes consistently, keep hwdec=no as the immediate fix. You can later test a platform-specific hardware-decoding method supported by your installed mpv build, but do not assume that every GPU supports every codec, profile, chroma format, or bit depth.
Success means hardware decoding is either disabled or changed to a mode that plays the problem segment multiple times without a frozen frame. Stop changing subtitle, network, and audio options if this test clearly identifies hardware decoding as the cause.
2.2 Test the video output backend
The video output, or VO, renders decoded frames and presents them through the operating system's graphics stack. A decoder can continue producing frames while the output backend fails to display them.
Start with a broadly applicable GPU output test:
mpv --no-config --hwdec=no --vo=gpu path-to-video
If your configuration explicitly sets vo, gpu-api, gpu-context, Vulkan, Direct3D, OpenGL, Wayland, or X11 behavior, remove that override temporarily. Allowing mpv to select a compatible context is often more useful than forcing a backend copied from another computer.
A fallback is successful when video presentation resumes without recurring freezes, severe frame drops, or terminal errors about device loss, swap chains, contexts, or frame presentation. Once one VO works reliably, retain it while testing other features.
2.3 Disable shaders, scaling overrides, and HDR processing
Custom GLSL shaders, interpolation, high-quality scaling, debanding, and HDR tone mapping can significantly increase GPU work. The issue may appear only with 4K, high-frame-rate, 10-bit, or HDR media because those files create a heavier rendering path.
Use --no-config first, since it excludes configured shader chains and rendering overrides. Then compare the affected HDR file with an ordinary SDR file. If SDR playback is stable but HDR freezes, inspect terminal output for GPU allocation, texture, device, or rendering errors. Re-enable your HDR and shader options one at a time.
Success means the high-bitrate or HDR sample plays with stable frame delivery after one expensive option is removed. There is no benefit in changing audio backends when audio is already continuing normally.
2.4 Disable subtitles and inspect tracks
Complex ASS subtitles can contain animation, blur, large vector drawings, embedded fonts, or effects that are expensive to render. A malformed subtitle file or an unusually demanding subtitle event can also make the picture appear frozen at a specific timestamp.
Test with subtitles disabled:
mpv --no-config --hwdec=no --sid=no path-to-video
If this works, try another subtitle track or a simple external SRT file. Also check whether your configuration changes subtitle scale, font handling, blending, or ASS behavior. A subtitle-related fix is confirmed when the same scene plays normally with subtitles off and freezes again only with the problematic track or renderer settings.
Use mpv's on-screen track list or startup output to confirm the selected video, audio, and subtitle tracks. Make sure video has not been disabled with vid=no, switched by a binding, or replaced by an attached picture track.
2.5 Check configuration files, profiles, bindings, and scripts
Review mpv.conf, input.conf, enabled profiles, and script options for anything affecting hwdec, vo, GPU APIs, interpolation, shaders, subtitles, screenshots, tracks, cache behavior, or online playback. Conditional profiles deserve special attention because they may activate only for certain protocols, resolutions, codecs, or file extensions.
Use the following command to print the contents of a named profile:
mpv --show-profile=profile-name
Check input.conf for bindings that change video tracks, toggle hardware decoding, cycle the video output, run external commands, or invoke scripts. A binding can be triggered accidentally if it replaces a familiar default key.
Third-party scripts can react to file loading, seeking, track changes, screenshots, playlists, and IPC events. If --no-config works, test your normal configuration with optional scripts temporarily moved out of mpv's script-loading location, or disable script loading for the diagnostic run if supported by your setup. Preserve the files so they can be restored.
2.6 Examine screenshots and IPC automation
A screenshot command can appear to freeze video when it writes a very large image, applies subtitles, targets a slow network folder, or encounters a blocked destination. Check screenshot templates and directories for invalid paths or missing write permissions. Test screenshot output in a local, writable directory.
IPC clients can also send pause, seek, track-selection, filter, or property commands. Close media controllers, editor integrations, and automation clients during the clean test. If the freeze disappears, reconnect one client at a time and inspect the commands it sends.

3. Check the Operating System, Media Source, and External Tools
3.1 Recognize GPU driver reset signs
A GPU driver reset can interrupt video presentation while buffered audio continues. Warning signs include a black or frozen mpv window, a brief display flicker, other GPU applications flashing or resetting, a system notification about a recovered graphics driver, or terminal messages mentioning device loss, context loss, swap-chain failure, Vulkan errors, or Direct3D removal.
Save your work and restart the affected application or computer before retesting. Install GPU drivers through the GPU vendor or operating system's trusted update mechanism. Avoid random driver bundles and codec packs. If the problem began immediately after a driver update, consult the vendor's release information and supported rollback process.
A driver-related fix is successful when the same file and timestamp survive repeated playback without display resets. If the entire desktop shows symptoms, focus on the driver and GPU environment before editing mpv subtitle settings.
3.2 Account for Wayland, X11, Windows, and macOS display differences
On Linux, compare behavior under the available Wayland or X11 session when practical. A compositor, graphics context, or direct-rendering path may behave differently between sessions. On Windows, overlays, remote desktop sessions, and graphics-driver resets can affect presentation. On macOS, confirm that mpv has the permissions needed for files stored in protected locations or removable volumes.
Do not change display servers solely because one video froze once. Consider this step when logs identify a graphics-context failure or when the problem is reproducible only in one desktop session.
3.3 Distinguish network stalls from rendering freezes
For an online URL, playlist, or network share, audio may continue because it is buffered farther ahead or requires less bandwidth. Video packets can arrive late, stop arriving, or contain corruption. Test the URL without configuration and watch whether cache or demuxer messages change at the freeze.
Try a stable local file with similar codec, resolution, and bit depth. If local playback works, test the network source again on a reliable connection. For a direct stream, conservative caching can help:
mpv --no-config --cache=yes stream-url
Do not treat a larger cache as a cure for a dead server or expiring URL. Success means video resumes continuously and cache underruns no longer coincide with the freeze.
3.4 Check yt-dlp and URL extraction
mpv may use yt-dlp to resolve supported website URLs. If only site URLs fail, confirm that yt-dlp is installed from its official project or a trusted package manager and is visible in the environment used to start mpv. A graphical launcher may have a different PATH from your terminal.
Run the same URL from a terminal and inspect the extractor output. An outdated extractor, changed website, authentication requirement, unavailable format, or expiring media URL can resemble an mpv problem. Test only content you are authorized to access, and do not attempt to bypass DRM or access controls.
3.5 Rule out a damaged or unusually demanding file
If one local file always freezes at the same timestamp, test another player or inspect the file with trusted media tools. Corrupt packets, broken timestamps, unusual codec profiles, extreme bitrates, and incomplete downloads can affect video while audio remains decodable.
If every file using one codec fails, suspect decoding or driver support. If only one file fails at one position, suspect the media file. Success means either the file plays consistently through the location or you establish that the limitation belongs to that source rather than your global mpv setup.
4. Capture Useful Evidence at the Moment of the Freeze
4.1 Create a detailed terminal log
Run mpv from a terminal so errors remain visible. For a detailed log, use:
mpv --msg-level=all=v --log-file=mpv.log path-to-video
Reproduce the freeze, wait a few seconds, quit normally if possible, and inspect messages immediately before and after the failure. Search for terms such as error, failed, device, context, vo, vd, hwdec, cache, demux, subtitle, and broken pipe.
Do not assume every warning is fatal. The most useful message is one that appears at the freeze timestamp and repeats when the symptom is reproduced.
4.2 Use the stats overlay and track information
mpv's stats overlay can expose dropped frames, delayed frames, decoder details, video output information, frame timing, and cache state. In standard setups, the i key displays statistics, although custom input bindings may change it. Compare the overlay before and during the freeze.
- Increasing dropped or delayed frames suggests performance or presentation trouble.
- A cache that empties points toward network delivery or demuxing.
- A hardware decoder shown only during failing runs implicates that path.
- A freeze tied to one subtitle event suggests renderer overload.
- A changed video track suggests a playlist, script, or binding action.
Record the selected video, audio, and subtitle track IDs. This is especially important for files with alternate angles, cover art, commentary, multiple subtitle formats, or several video streams.
5. Run a Controlled Temporary Test
Build a small test matrix instead of editing your permanent configuration repeatedly. Use the same file, timestamp, window state, and display for each run.
- Run
--no-config --hwdec=no. - If stable, run
--no-config --hwdec=auto. - If both freeze, test
--no-config --hwdec=no --vo=gpu. - Test with
--sid=no. - For online media, compare the URL with a local file.
- Re-enable your configuration without optional scripts.
- Restore one profile, shader, script, or binding at a time.
Repeat the failing scene at least twice after each meaningful change. A successful fix is not merely a frame updating after a seek. The video should continue moving, remain synchronized with audio, and avoid new log errors. Once one isolated change produces stable playback, stop. Save the working command and make only that targeted adjustment permanent.
6. Quick Fix Checklist
- Test the file with
mpv --no-config --hwdec=no. - Compare software decoding with
--hwdec=auto. - Disable subtitles with
--sid=no. - Remove forced VO, GPU API, context, shader, and HDR overrides temporarily.
- Inspect conditional profiles with
--show-profile. - Check input bindings for track, filter, screenshot, and script commands.
- Test without third-party scripts and IPC clients.
- Compare a local file with the failing stream or website URL.
- Verify yt-dlp availability when only supported website URLs fail.
- Watch for GPU device-loss messages and desktop flicker.
- Capture a log with
--msg-level=all=v --log-file=mpv.log. - Change one option at a time and stop after repeatable success.
7. Frequently Asked Questions
7.1 Why does audio continue when mpv video freezes?
mpv processes audio and video through separate decoding and output paths. The audio decoder and backend can continue consuming buffered packets while video decoding, GPU upload, subtitle composition, or frame presentation has stalled. Continuing audio therefore points toward the video path, but it does not identify one specific component by itself.
7.2 Is hardware decoding always the cause?
No. It is a common and easy-to-test cause, especially when software decoding works. Video output backends, drivers, subtitles, shaders, HDR processing, scripts, and stream delivery can produce the same visible symptom. Use the clean comparison rather than disabling hardware decoding permanently without evidence.
7.3 Can subtitles really freeze only the picture?
Yes. Complex ASS effects and large embedded graphics can create substantial rendering work at specific timestamps. Test --sid=no. If the scene plays normally, use another subtitle track or simplify subtitle-related settings before changing unrelated decoder options.
7.4 What log message matters most?
Prioritize messages generated exactly when the frame stops updating. Device-loss and context errors suggest the GPU or VO. Hardware-decoder initialization or transfer failures suggest hwdec. Cache underruns and demuxer errors suggest the source. Subtitle rendering errors tied to one timestamp suggest the active subtitle track.
7.5 Should I delete my entire mpv configuration folder?
No. Use --no-config for a reversible clean test. If it works, inspect configuration files, profiles, scripts, and bindings individually. Preserve your setup and disable components temporarily rather than deleting everything.
7.6 When should I stop troubleshooting?
Stop changing settings when the same problem segment plays repeatedly with moving video, synchronized audio, responsive controls, and no new freeze-time errors. Apply the smallest confirmed fix to your normal setup. Additional tuning after stable playback can create a new problem and obscure the original cause.