Saturday 28 November 2020

视频用 N 倍速看对 fps 的影响

如果播放视频时加速,对 fps 有何影响?如何预测会 dropped 多少 frames?

mpv 确实可以 speed up 后如果仍可以满足 monitor 的 refresh rate Hz 就可以不 drop frames。

不过 165 Hz 要求 gpu+cpu 很高否则也是有问题(不然 multitasking 容易 drop frame)。

而且 144 Hz 或 120 Hz 都能被常见的 24 fps 完整除 (120 Hz 能被 youtube 常见的 30 fps 除)

,只有 165 Hz 怪怪的不能整除 (https://www.svp-team.com/forum/viewtopic.php?pid=63214#p63214)。



做个小实验验证一下:






(纠正: mpv 的新选项用法是 -x=value 和 --y 两种, 不再是上面的 --x=value)

如截图,mpv 播放不同 fps 不同速度的小实验,我 Monitor 59.99 Hz:


[1] 30 fps x 2 倍速 = 60 fps,由于我 Monitor 59.99 Hz,不会 drop 任何 frame, ( ( (30 video fps * 30 秒) / (30 秒 / 2.0 speed) ) - 60 Hz) * (30 秒 / 2.0 speed) = ~0 frame。

[2] 120 fps 普通速,由于 120 超出 Monitor 能力 一倍,30 秒后会 dropped ( ( (120 video fps * 30 秒) / (30 秒 / 1.0 speed) ) - 60 Hz) * (30 秒 / 1.0 speed) = ~1800 frames (即总数的一半)

[3] 60 fps x 2 倍速 = 120 fps,由于 120 超出 Monitor 能力 一倍,30 秒后会 dropped (( (60 video fps * 30 秒) / (30 秒 / 2.0 speed) ) - 60 Hz) * (30 秒 / 2.0 speed) = ~900 frames (即总数的一半)

[4] 60 fps x 1.5 倍速,30 秒后会 dropped ( ( (60*30) / (30 /1.5) ) - 60 ) * (30 /1.5)  = ~600 frames (即总数的三分之一)

预测 dropped 多少 frame 只能大概 ~,因为一: Hz 并非整数。二:时间和速度不担保 round 得精准,也因此我使用 --speed=1.99 而不是 2。 三:其它因素譬如 cpu/gpu/multitasking 可以随机 drop。 四:不清楚囧除非研究 mpv 源码 🌚

至于 YouTube player 我觉得 "Stats for Nerds" 的 frame dropped 信不过 🌚 (https://bugzilla.mozilla.org/show_bug.cgi?id=1578042)。我手机 app 60 Hz play 60 fps x 2 speed 却几乎没有任何 drop。

相关问题: https://video.stackexchange.com/questions/15857/what-happens-to-frames-when-you-speed-up-a-video-clip


No comments:

Post a Comment