PotPlayer+LAV+madvr长时间播放后逐渐音画不同步问答

2017-10-12 13:30发布

[图]不知道有没有人遇到过类似的问题?具体症状是,如果是看30分钟内的番剧,是发觉不了这点漂移的,但连续播放电影,比如2小时后,就能明显感觉到视频比音频慢了几帧,即使刚开始播放的时候是完美同步的。这个问题其...

不知道有没有人遇到过类似的问题?具体症状是,如果是看30分钟内的番剧,是发觉不了这点漂移的,但连续播放电影,比如2小时后,就能明显感觉到视频比音频慢了几帧,即使刚开始播放的时候是完美同步的。
这个问题其实早就发现过,当时归咎于MPC-BE每次暂停都会引入一点点的不同步(投影仪切换刷新率比较慢,所以每次打开都是要先暂停一下的),也没太在意,少暂停就是了。后来忍无可忍把MPC-BE换成了potplayer,这样测试过反复暂停也不会引入偏差了,但视频/音频同步漂移问题依旧。这时我就试图在LAV和madvr上寻找原因,但无论怎么想如此成熟的播放体系,应该不会有这问题呀。况且我都是用的最新版,LAV 0.70.2 release和 0.70.2-80 git nightly都试过了。
我先猜想是否可能是audio decoder的问题,lav audio decoder的auto a-v sync correction这个选项看着我也很慌。于是先试了下把音频解码器换成potplayer自带的。问题仍然会出现。。但不知是否是错觉,感觉同样播放2小时,这样子偏差略微小一些?作为参考,我用来测试的影片音轨为DTS,pot调用了ffdshow audio decoder来解码。同样,我之前播放VCB压制的视频的时候也有过这感受,放到后半各种短促的声音和画面对不上(印象中有乐园追放和希骑剧场版),所以应该不是视频文件的问题。
另外为了确认不是硬件的问题,我用mpv播放器试过。。2小时后依然完美同步,真是好气。
硬件:intel i7-4790K, DDR3 1866 2x8G,GTX 970,视频由HDMI输出到投影仪,音频由USB输出到外置USB解码器再输出到音箱。

截一些配置的图吧
说明下,resample到96khz是最近才启用的,之前都是原样输出,mpc-be的wasapi和potplayer的wasapi都试了。应该不是这个的问题。
图中视频截图图省事就直接在8bit显示器上截了。实际测试的时候在10bit投影仪上,帧率切换到23.976的(madVR报帧丢失/重复率只有每3小时一次),全屏独占和窗口化播放都试过,都一样的表现。
写得有点长。。如果可以的话想到什么就回复点啥吧,可能会有线索。先谢过各位了。

1条回答
绝度00715
1楼 · 2017-10-13 13:50.采纳回答

mpv 的 3dlut 是每次启动时读取 icc 在线生成的(除非你配置指定了 --icc-cache-dir,不过自从挺长时间以前某次改进之后 3dlut 体积大大缩小,每次重新生成也不会比从硬盘读取更慢,所以一般没什么必要)。
和 madvr 不同的是,理论上说 mpv 并不需要 loader 停止工作,因为 mpv 不会改变当前的 vcgt。displaycal 给 madvr 生成 3dlut 的默认设置则是包含了 vcgt 进去,所以 madvr 需要先把 vcgt 重置为 linear。参考:https://wenda.hao4k.cn/article-14961.html

madvr 和 q&a 部分,以及 https://hub.displaycal.net/issue/9216/
但是,displaycal 的 loader 在某些机器上可能会干扰 mpv 的 display-sync 模式,造成每次重载校正曲线时卡顿画面。参考:https://hub.displaycal.net/issue/6341/
所以,你可以在 displaycal 的 loader 设置里添加一个 mpv.exe 例外,loader 检测到例外进程会自动暂停,就达到和 madvr 一样的效果了。如果嫌每次启动 mpv 时弹出一个通知说 loader 已暂停很烦的话,下个版本的 displaycal 会增加选项关掉那个提示。参考:https://hub.displaycal.net/issue/9214/