剪辑杂谈(1)——格式奇怪的录播
这一系列将记录我接单过程中遇到的一些奇怪或好玩的问题,并尝试对这些问题产生的原因进行分析,而后给出可行的解决办法。
早在去年10月,就有很多切片man反应说用录播姬录制的录播导入剪辑软件后存在音画不同步的现象,当时我也检查了一些录播,发现均存在VFR(动态帧速率)的问题,尽管Pr在早些版本中就更新了对VFR的支持,但实际剪辑时仍会音画不同步。
直播姬并不支持VFR推流,只能选择CFR(固定帧速率),OBS也在早些版本的公告中说取消了对VFR的支持;既然推流端不存在问题,那只可能是平台串流端采用了VFR,怀疑是为了减轻服务器压力。但我对于流媒体传输并不熟悉,也不清楚将CFR换为VFR能降低多少成本。
对于VFR转CFR,我的办法是在ffmpeg转码过程中中加入参数"-vsync cfr",尽管可能会损失流畅度,但尽可能保证了剪辑过程中的音画同步。在视频不长及显卡性能强的情况下,可以考虑在转码中选择略低于动态平均帧速率的帧速率,并使用SVFI等AI补帧软件进行补帧。
如VFR60.01可以直接转为CFR60,而VFR59.95可以考虑转为CFR50再补至60。
而非整数帧速率,同时Pr识别为VFR的,并不意味着视频一定就是VFR的,还有可能是由时间码错误或不同步引起的。时间码不同步通常是因为OBS推流和录制编码采用的时间码逻辑与剪辑软件采用的时间码逻辑并不相同。当然,这一问题也可以采用上述的办法解决。
前文提到OBS在早些版本的公告中说明了取消对VFR的支持,但是在录制透明底视频的过程中,即采用png编码时,偶尔会出现VFR问题;此外,在png编码下录制多音轨视频时,偶尔会出现多音轨时间码不同步的问题。在OBS官方论坛询问无果,只得到了“现版本OBS不可能录制出VFR”的答案。起初我怀疑仍然是时间码问题导致的视频被识别为VFR,而非真的VFR,但查阅了OBS关于时间码部分的源码后,仍未得到解答,至今原因不明。问题可能出在OBS调用的ffmpeg包上,但这方面我尚不熟悉。由于我遇到的透明底录制时多为无声而后期配音,故音画不同步问题可以忽略。
最近遇到的录播封装格式为QuickTime/MOV,编码格式为Prores422,音频为双声道但只有左声道有声音,VFR29.97,颜色格式为YUV422,色彩空间为sRGB。很明显,这应当是来自苹果相关设备的录播,29.97也是Prores422下常见的帧速率,Pr识别为VFR应当为时间码不同步导致,而双声道只有单侧有声应当为麦克风输入设置错误。
解决流程如下:
提取视频并重新编码,但将Prores转码为帧间h264时提示不支持cuda加速,只好采用CPU编码,保险起见启用“-vsync cfr”参数,CFR25,码率10mkps;(现在想来完全可以CFR30)
提取音频为wav格式,将左声道复制到右声道,为了制造差异稍加一点混响;
将音视频合并,并用SVFI补帧到CFR30(CFR60)。
以上为这段时间的经验和问题总结。