我有几个视频,其中包含视频、AAC 音频,一些带有额外的备用内容音频流和字幕。
我想要做的是按原样复制所有内容,同时将转换后的 a:0 从 AAC 插入到 AC3 到 a:0 位置(因此所有现有音频流都“向下移动”一个位置),并将新的 a:0 设为默认音频流。最终结果是相同的视频文件,但有一个新的附加音频流。(AAC 流被保留,而不是被替换。)
我尝试过这个,但是我认为我做错了什么,因为它似乎需要很长时间(与转换音频然后单独合并相比)。
ffmpeg -i "AAC.mkv" -map 0:v -c:v copy -c:a:0 ac3 -b:a:0 640k -map 0:a:0 -map 0:a -map 0:s? -c:s copy "AC3.mkv"
它确实似乎有效,但正如我所说,似乎比实际需要的时间更长。那么,我只是没有耐心,还是我做错了什么导致它变慢了?
答案1
我几天前才开始使用 ffmpeg,所以我可能错了,但我认为这种方法比较慢,因为它对原始音频和新音频都进行了重新编码,因为此代码不包含“-c:a copy”:
ffmpeg -i "AAC.mkv" -map 0:v -c:v copy -c:a:0 ac3 -b:a:0 640k -map 0:a:0 -map 0:a -map 0:s? -c:s copy "AC3.mkv"
而另一个代码包含“-c copy”,这意味着这个代码复制所有内容(包括原始音频)并且仅通过转换重新编码新音频,这就是为什么它花费的时间更少:
ffmpeg -i "AAC.mkv" -c copy -map 0:v -c:a:0 ac3 -b:a:0 640k -map 0:a:0 -map 0:a -map 0:s? -to 5:00 "AC3.mkv"
答案2
在查看了另一个关于类似问题的问答(我之前查看过并部分尝试过)后,我又尝试了一次,结果更快。如果能就其运行速度更快的原因发表评论,我将不胜感激。
ffmpeg -i "AAC.mkv" -c copy -map 0:v -c:a:0 ac3 -b:a:0 640k -map 0:a:0 -map 0:a -map 0:s? -to 5:00 "AC3.mkv"