使用 MPV 和 SVP 让播放更流畅

可能国内 MPV 播放器的用户还不多,MPV 也是一款多平台全能免费播放器。目前 github 上此项目的活跃度非常高,我感觉此项目非常有前途。

如果只是一个普通的多平台全能免费播放器,那目前市面上类似的不少,而且几乎都比 MPV 更成熟。而 MPV 之所以能从一帮播放器之中脱颖而出,一定有他特别之处。而我开始用 MPV,则是因为它的 interpolation 功能。此功能解决了什么,得先搞清楚下面的问题。

使用电脑显示器看影片有什么问题

目前所有的影片我敢说 90% 都是 24 帧/秒 (24FPS),即一秒钟会出现连续的 24 幅静止的画面,而因人眼的残留特性以及大脑的处理,让人感觉看起来还是很流畅的。

再说说显示器。目前主流的液晶显示屏,刷新率我也敢说 90% 以上都是 60 赫兹,也就是说一秒钟显示器会显示 60 次连续的画面,也可以理解成显示器本身的帧数就是 60FPS。

不过,就因为显示器刷新率高,影片帧数底,所以影片的一帧,是用显示器两帧到三帧来显示的。为什么是两帧到三帧呢?60 除以 24 是 2.5,也就是影片一帧平均是 2.5 个显示器的帧数。然而帧数只能是整数,显示器在显示影片第一帧画面的时候,显示器前两帧毫无疑问都是显示影片第一帧,但显示器第三帧因为影片的第一帧时间还没放够,所以还是显示影片第一帧,只不过事实上多显示了半帧的时间,实际上是把影片第二帧的播放时间给占用了……这么说可能挺绕的,也可以这么说:如果影片画面帧顺序是 ABCD…… 来标识的话,那么显示器显示影片帧的顺序则是,AAABBCCCDD…… 用图片来解释可能更直观一些

3:2 pull-down

有些朋友看到这是可能已经感觉到问题是什么了。正常电影每一帧占用的播放时间应该是一样的。但因为显示器刷新率的问题,没法在显示器上做得到,所以会导致在显示器上看电影跟在电影院看的感觉有点不一样。

可能有人会说,就那么 0.5 帧的差距,真的能看出来吗?说实话,就我的观察,看不出来。不过,之前看到有人写的一篇文章说得好,他说拳皇 97 和 98,有些连招可能只调了 0.1 秒的间距,人眼和人脑根本看不出什么区别,但手却是能感觉得出来的,也就是很多人所说的『手感变了』。类似,虽然 0.5 帧的差距观察不出个所以然,但是『观感』变了。

MPV 如何解决这个问题

其实知道了问题的本质,解决问题就方便很多,MPV 的 interpolation 参数,便是将之前的播放序列 AAABBCCCDD 变成了 AA(A+B)BBCC(C+D)DD,其中的『+』,就是将前后两帧的画面融合到一幅画面里。

smooth motion

这只是 MPV interpolation 的一种方式,事实上通过 tscale 参数,还可以指定其他的方式,不但可以让 A 和 B 融合,B 和 C 也融合,使画面看起来更流畅一点:

Convolution-based interpolation

注: video-sync 参数如果不指定的话,mpv 的刷新率不会与显示器同步,即使加了 interpolation 参数也没有用。

再注: 想要测试 tscale 到底都有那些选项,可以使用 mpv --tscale=help 查看。

不得不提的 SVP

svp 在两年前我就用过了,它跟 MPV 的 interpolation 是完全不一样的概念,它更狠,通过实时计算,硬是将 24 帧影片中每两帧之间,补上连续的 2 到 3 帧『中间画面』,完全变成 60FPS 的影片。说实话感觉相当不错,比原 24FPS 看起来顺畅多了。

Motion-based interpolation

但为什么现在我不用它了呢,第一是 SVP 的确对系统要求很高,我之前的老爷 ThinkPad 跑 SVP 过于吃力;当然第二点是最主要的…… SVP 现在开始收费了,呵呵呵呵呵……

不过对于想要体验画面的绝对丝滑,SVP 绝对值得一试。

wx pay

CC BY-NC-ND 4.0 使用 MPV 和 SVP 让播放更流畅 by Chrisyue's Blog is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

发表评论

电子邮件地址不会被公开。

eighteen ÷ = two