From 5793184c2d71f4425732cd44baddd6dfbff64495 Mon Sep 17 00:00:00 2001 From: zenyd Date: Tue, 26 Sep 2017 15:36:50 +0200 Subject: [PATCH] Minimize frame drops on resuming normal speed Introduces slight a-v desynchronisation in speedup state, which is not really noticeable. On resuming normalspeed a-v gets synchronized once again. --- README.md | 6 ++++-- speed-transition.lua | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 67fb9db..62aafd9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## speed-transition -This is a lua script for the mpv media player. The purpose of this script is to speed up the video if no subtitles are visible for a certain amount of (user configurable) time. It is inspired by [the speed-between-subs](https://gist.github.com/bitingsock/47c5ba6466c63c68bcf991dd376f1d18) script. +This is a lua script for the mpv media player. The purpose of this script is to speed up the video if no subtitles are visible for a certain amount of (user configurable) time. It is inspired by the [speed-between-subs](https://gist.github.com/bitingsock/47c5ba6466c63c68bcf991dd376f1d18) script. ### How it works The script looks for the next subtitle and if it is ahead by 5 (default) seconds the video gets sped up and resumes normal playback just before the subtitle becomes visible. This is done to prevent audio glitches when speech starts. @@ -9,7 +9,9 @@ For the script to work it is necessary to have an appropriate 'text' subtitle se If you want to use it with local files it is necessary to either have `--cache=yes` or `--demuxer-readahead-secs=10` options enabled in your config/cli. A value of `demuxer-readahead-secs>=10` is recommended. The same applies to `--cache-secs` option if it has been set. -The script has sensible defaults, but if you want to change the `lookahead` value take care to not set it larger than what the buffers can provide. This applies to embedded subtitles and not external. +The script works best in `video-sync=audio` mode (the default in mpv), because it will then be able to minimize frame drops on speed transition from high->normal. Stutter-free playback is the result. + +Sensible defaults have been set, but if you want to change the `lookahead` value take care to not set it larger than what the buffers can provide. This applies to embedded subtitles and not external. Key Bind|Effect --------|------ diff --git a/speed-transition.lua b/speed-transition.lua index 70495ec..05d137c 100644 --- a/speed-transition.lua +++ b/speed-transition.lua @@ -18,6 +18,9 @@ end function restore_normalspeed() mp.set_property("speed", normalspeed) + if mp.get_property_native("video-sync") == "desync" then + mp.set_property("video-sync", "audio") + end end function check_should_speedup() @@ -78,6 +81,9 @@ function speed_transition(subtext, sub) if sub == "" then nextsub, shouldspeedup = check_should_speedup() if shouldspeedup then + if mp.get_property_native("video-sync") == "audio" then + mp.set_property("video-sync", "desync") + end normalspeed = mp.get_property_native("speed") mp.set_property("speed", speedup) add_timers(nextsub)