summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-03-02 14:21:35 +0100
committerJan Ekström <jeebjp@gmail.com>2018-03-03 02:38:01 +0200
commit8288fa6978cefe439e0810884ca6b83542ee6e09 (patch)
tree01c96455896f0b9d9f3d6d43c19ce2e380697545
parent3075017ebfb63328e527c714c53fc867febdbbe3 (diff)
downloadmpv-8288fa6978cefe439e0810884ca6b83542ee6e09.tar.bz2
mpv-8288fa6978cefe439e0810884ca6b83542ee6e09.tar.xz
options: add a builtin low-latency profile
Well I guess it doesn't help that much. Also add some stuff that might help to the manpage. The fundamental problem with some "live" sources (e.g. x11grab) is actually that the player gets behind initially, and never thinks it has to catch up. This is also why --untimed can help.
-rw-r--r--DOCS/man/mpv.rst39
-rw-r--r--etc/builtin.conf10
2 files changed, 49 insertions, 0 deletions
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