Troubleshooting
Practical diagnostics for operators and engineers.
Focus on reproducible checks, not speculation.
For quick fixes, see the condensed section in README.md.
Timecode Display Issues
Timecode Not Visible
Symptoms:
- No timecode appears when playing files
- Screen remains blank except for video
Solutions:
-
Check display mode: Press
trepeatedly to cycle through modes- The suite may have been left in ‘off’ mode
- Try each mode: Full → TC Only → Minimal → Off
-
Verify Lua script installation:
Terminal window ls ~/.config/mpv/scripts/timecode.lua# Should exist and be readable -
Check mpv Lua support:
Terminal window mpv --version | grep lua# Should show Lua version -
Test with minimal config:
Terminal window mpv --no-config --script=~/.config/mpv/scripts/timecode.lua test.mp4# If this works, conflict exists in main config
Drop-Frame Timecode Incorrect
Symptoms:
- Timecode doesn’t match reference (e.g., Avid, Premiere)
- Semicolon appears when colon expected (or vice versa)
Solutions:
-
Verify actual framerate:
Terminal window mpv --msg-level=all=info test.mp4 | grep fps# Or press 'i' during playback -
Check tolerance values: Edit
timecode.lua:-- Adjust tolerance if mpv reports imprecise framerateslocal function is_close(a, b, eps)return math.abs(a - b) < (eps or 0.01) -- Increase if neededend -
Manual framerate override: If automatic detection fails:
-- In timecode.lua, force framerate:local fps = 29.97 -- Force NTSC drop-frame-- local fps = mp.get_property_number("container-fps") or 25 -- Comment out
Progress Bar Not Updating
Symptoms:
- Progress bar frozen
- Bar doesn’t reflect playback position
Solutions:
-
Check file duration property:
- Some formats (e.g., raw streams) may not report duration
- Press
`and type:print-text "$\{duration\}" - If “undefined”, progress bar cannot display
-
Increase update rate: Edit
timecode.lua:local opts = {refresh = 0.1, -- Increase from 0.05 if system is slow}
Audio Routing Issues
Channel Selection Has No Effect
Symptoms:
- Pressing
Ctrl+1-8doesn’t change audio - Always hearing same channels
Solutions:
-
Verify channel count:
Terminal window mpv --no-video --msg-level=all=info test.mp4 | grep channels# Or press 'Ctrl+i' during playback -
Check for multiple tracks vs. channels:
- Multiple tracks: Use
#to cycle tracks first - Multiple channels within track: Use
Ctrl+1-8 - Press
Ctrl+ito see track and channel count
- Multiple tracks: Use
-
Codec limitations:
- AC3/E-AC3/DTS may not support custom routing
- Use
Ctrl+0for default downmix instead - Consider remuxing to PCM for full control:
Terminal window ffmpeg -i input.mp4 -c:v copy -c:a pcm_s16le output.mov
-
Verify lavfi support:
Terminal window mpv --vf=help | grep lavfi# Should show lavfi wrapper available
Solo Monitoring Plays Wrong Channel
Symptoms:
Ctrl+Alt+1doesn’t play channel 1- Channels appear offset
Solutions:
-
Channel numbering: Remember that channels are zero-indexed internally:
- User sees: CH1, CH2, CH3…
- Internal: c0, c1, c2…
Ctrl+Alt+1= c0 (first channel)
-
Check channel layout:
Terminal window ffprobe -show_streams input.mp4 | grep channel_layout# Unusual layouts may need manual mapping
Loudness Normalisation Causes Distortion
Symptoms:
- Audio clips or distorts when
Ctrl+lactivated - Excessive loudness even at low volume
Solutions:
-
Check true peak limiting:
- EBU R128 and ATSC targets include -1 dBTP limiting
- If source is already hot, may cause pumping
- Solution: Cycle
Ctrl+lto ‘none’ for critical listening
-
Reduce target level: Edit
audiomap.lua:local LOUDNESS_TARGETS = {ebu_r128 = -25, -- Reduce from -23 for more headroomatsc = -26, -- Reduce from -24} -
Use offline normalisation for deliverables:
- Real-time loudness is for monitoring only
- For deliverables, use ffmpeg-normalize or similar:
Terminal window ffmpeg-normalize input.mp4 -o output.mp4 -c:a aac -b:a 192k
Performance Issues
Playback Stutters or Drops Frames
Symptoms:
- Jerky playback
- Frame drops reported in terminal
- Audio/video desync
Solutions:
-
Disable interpolation:
- Press
`(backtick) for console - Type:
set interpolation no - Or use profile:
mpv --profile=qc-accurate test.mp4
- Press
-
Enable hardware decode:
- Check current:
mpv --msg-level=all=info test.mp4 | grep hwdec - Force enable: Add to mpv.conf:
hwdec=auto-copy # Or: vaapi (Linux), videotoolbox (macOS), d3d11va (Windows)
- Check current:
-
Reduce timecode update rate: Edit
timecode.lua:local opts = {refresh = 0.2, -- Update every 200ms instead of 50ms} -
Disable loudness filter:
- Loudness normalisation is CPU-intensive
- Press
Ctrl+luntil “None” displays - Or disable globally: Comment out in
audiomap.lua
High CPU Usage When Idle
Symptoms:
- CPU usage remains high when paused
- Fan noise increases
Solutions:
-
Check update timers:
- Timecode should pause when file paused
- If not, edit
timecode.lua:mp.observe_property("pause", "bool", function(_, paused)if paused thenstop_timer()elsestart_timer()endend)
-
Disable background processing:
- Add to mpv.conf:
cursor-autohide=1000stop-screensaver=yes
- Add to mpv.conf:
Platform-Specific Issues
macOS: Scripts Not Loading
Symptoms:
- Clean install, scripts don’t run
- “script failed to load” errors
Solutions:
-
Check path case sensitivity:
- macOS is case-insensitive but case-preserving
- Ensure:
~/.config/mpv/scripts/(lowercase)
-
Verify file permissions:
Terminal window chmod 644 ~/.config/mpv/scripts/*.lua -
Check for quarantine attribute:
Terminal window xattr -d com.apple.quarantine ~/.config/mpv/scripts/*.lua
Windows: PowerShell Script Execution
Symptoms:
install.ps1refuses to run- “execution of scripts is disabled” error
Solutions:
-
Enable script execution temporarily:
Terminal window Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass.\install.ps1 -
Or run with bypass:
Terminal window powershell -ExecutionPolicy Bypass -File install.ps1
Linux: GPU Decode Not Working
Symptoms:
hwdec=autohas no effect- Software decode only
Solutions:
-
Install VA-API drivers:
Terminal window # Intelsudo apt install intel-media-va-driver# AMDsudo apt install mesa-va-drivers# NVIDIA (requires proprietary drivers)sudo apt install vdpau-va-driver -
Verify VA-API availability:
Terminal window vainfo# Should list supported profiles -
Force VA-API in mpv.conf:
hwdec=vaapivo=gpu
Configuration Conflicts
Scripts Work Standalone But Not Together
Symptoms:
- Individual scripts function when tested alone
- Combined installation causes issues
Solutions:
-
Check for keybinding conflicts:
- Open
input.confand search for duplicate bindings - mpv uses first match, subsequent ignored
- Open
-
Test with minimal config:
Terminal window mpv --no-config \--include=~/.config/mpv/mpv.conf \--include=~/.config/mpv/input.conf \test.mp4 -
Check script load order:
- Scripts in
scripts/folder load alphabetically - If order matters, prefix with numbers:
01_timecode.lua02_audiomap.lua
- Scripts in
Getting Help
If issues persist:
-
Collect diagnostic info:
Terminal window mpv --version > diagnostics.txtmpv --log-file=mpv.log test.mp4# Play for a few seconds, then quit -
Create minimal reproduction:
- Isolate the issue to smallest config
- Note exact steps to reproduce
-
Report on GitHub:
- Include: mpv version, OS, file format, steps, logs
- Use issue template if provided
- Include
diagnostics.txtand relevant logs
-
Community resources:
- mpv manual:
man mpvor https://mpv.io/manual/ - mpv IRC: #mpv on Libera.Chat
- Project discussions: GitHub Discussions
- mpv manual:
Remember: Many “issues” are actually correct behaviour for broadcast standards. For example, drop-frame timecode intentionally skips frame numbers—this is not a bug!