diff --git a/DOCS/man/mpv.rst b/DOCS/man/mpv.rst index 5ce5d43e25..7f1509ee3b 100644 --- a/DOCS/man/mpv.rst +++ b/DOCS/man/mpv.rst @@ -698,6 +698,45 @@ listed. properties.) +LOW LATENCY PLAYBACK +==================== + +mpv is optimized for normal video playback, meaning it actually tries to buffer +as much data as it seems to make sense. This will increase latency. Reducing +latency is possible only by specifically disabling features which increase +latency. + +The builtin ``low-latency`` profile tries to apply some of the options which can +reduce latency. You can use ``--profile=low-latency`` to apply all of them. You +can list the contents with ``--show-profile=low-latency`` (some of the options +are quite obscure, and may change every mpv release). + +Be aware that some of the options can reduce playback quality. + +Most latency is actually caused by inconvenient timing behavior. You can disable +this with ``--untimed``, but it will likely break, unless the stream has no +audio, and the input feeds data to the player at a constant rate. + +Another common problem is with MJPEG streams. These do not signal the correct +framerate. Using ``--untimed`` or ``--no-correct-pts --fps=60`` might help. + +For livestreams, data can build up due to pausing the stream, due to slightly +lower playback rate, or "buffering" pauses. If the demuxer cache is enabled, +these can be skipped manually. The experimental ``drop-buffers`` command can +be used to discard any buffered data, though it's very disruptive. + +In some cases, manually tuning TCP buffer sizes and such can help to reduce +latency. + +Additional options that can be tried: + +- ``--opengl-glfinish=yes``, can reduce buffering in the graphics driver +- ``--opengl-swapinterval=0``, same +- ``--vo=xv``, same +- without audio ``--framedrop=no --speed=1.01`` may help for live sources + (results can be mixed) + + PROTOCOLS ========= diff --git a/etc/builtin.conf b/etc/builtin.conf index 0f53b3974c..79a5414a35 100644 --- a/etc/builtin.conf +++ b/etc/builtin.conf @@ -43,6 +43,16 @@ correct-downscaling=yes sigmoid-upscaling=yes deband=yes +[low-latency] +audio-buffer=0 # minimize extra audio buffer (can lead to dropouts) +vd-lavc-threads=1 # multithreaded decoding buffers extra frames +cache-pause=no # do not pause on underruns +demuxer-lavf-o-add=fflags=+nobuffer # can help for weird reasons +demuxer-lavf-probe-info=nostreams # avoid probing unless absolutely needed +demuxer-lavf-analyzeduration=0.1 # if it probes, reduce it +video-sync=audio # DS currently requires reading ahead a frame +interpolation=no # requires reference frames (more buffering) + # Compatibility alias (deprecated) [opengl-hq] profile=gpu-hq