大家好,我是波导终结者。
之前跟大家分享过用OBS录视频,功能非常强大。然而OBS在设置上确实复杂,劝退不少人,我也经常遇到设置忘了改或者失误的情况。最近在录视频的时候,我就出了一次错,幸好用最少的代价给救回来了。今天就跟大家分享一下思路。
事情的起因也很简单,平时我有时候用采集卡录制,有时候是PC内录,所以设置会来回改动。这次录的时候忘了确认一下,变成上图的设置了。轨道1只有PC桌面的音频,也即游戏的声音,没有我的实况人声。万幸的是,麦克风轨道我还有录到轨道2里面,不至于重新再配一次音。那么这种情况下,该如何挽救这个视频,让它恢复为音轨既有游戏声音又有实况人声的状态呢?
还好我录的是MKV文件,多音轨同时有保留,处理起来并不难。关于OBS录制多音轨的方法,图文可以参考《OBS视频录制最强三板斧!早下班,很简单》,视频可以参考BV1Ut4y1C7Rz。
理论上,最无脑的方法就是把视频文件拖到非线编软件里去,然后重新渲染出来,但是这样的话耗时还是非常长的,并且视频画面还会经过二次压缩,质量严重受影响。所以今天还是跟大家分享一下尽量无损、快速的方法(但并没有那么傻瓜式操作)。
用MKVToolNix来看一下文件结构,一个视频轨道,两个音频轨道,剩下的标签可以忽略。这个工具界面挺好用的,混流也方便,但是如果要把单独一轨提取成音频或视频,却不太好用,因为外面会多一层容器。
这时候,我们使用另一个工具,MKVExtractGUI版,把单独的两个音轨导出来。导出来之后,把文件名改一下,我这里用的是track2.aac和track3.aac,这样比较好认。
这里,我仍然用ffmpeg来做,这东西真是万能,我之前跟大家分享过N次了,也省得下去下载乱七八糟的软件,现在太多都有捆绑全家桶了。
直接看命令,-i后面接一个文件输入,两个音频轨道就需要两个-i。后面的命令都是ffmpeg官方的规格,也不要问我为什么这么写。-filter_complex amix=inputs=2这个就是启用混音滤镜,输入通道为2个。duration=first这个决定了音频的长度,如果两个音轨的长度不一样,此参数为first则以第一个轨道为准,如果为longest则以最长的为准。
当然,混音的话是要经过重新编码的,理论上会损失一点音质,不过音频重编码的损失相对于视频来说小得多,完全可以忽略。这点时间,跟把文件扔到非线编软件里面重新渲染实在是小巫见大巫了。
最后,用MKVToolNix把源文件(要它的视频)和混音过后的音频文件都拉进来,只保留要的音频轨道和视频轨道,开始混流得到输出文件,就完事儿了。
理论上,这当然不是操作步骤最少的方法。步骤最少的方法,当然是用ffmpeg文件直接一步到位,但是这样的话需要在同一条命令行里面处理3条源轨道,并且同时完成混音、视频轨和音频轨的指定等工作,很复杂也很容易出错,最后反而会花更多时间在调试上。鉴于不少朋友都说命令太复杂,所以跟大家分享的是保证质量和速度的前提下,又最易学的方法。如果这么详细和简单的教程还学不会的话,那就得付出点时间代价,用重新渲染的方案了。
另外,由于在知乎经常有这方面的回答和原创,也经常被推送类似的问题。有的情况下是无解的,比如录的时候根本就没录下游戏声音或者人声。没有游戏声音基本只能重打,没有人声的话你可以后期配,再用我的这个方法混音进去。不存在的东西是不能凭空变出来的,我甚至看到有的问题问说,画面没录下来全是黑的有办法可以调出来吗?重头再来吧兄弟……
感谢大家观看,如果对你有用,帮忙点个赞和关注吧,我们下期再见。