Ffmpeg复制音频流并对此新流进行编码

时间:2014-02-05 01:34:22

标签: audio ffmpeg mapping

由于兼容性问题,我需要重新编码一些视频文件。它们目前是具有h.264视频和ac3-a52音频的mkv文件。我想保留h.264视频,将容器转换为m4v并创建两个音频轨道,一个带有原始的ac3-a52,另一个用它复制,但是在aac立体声中。

我假设必须有某种音频流映射命令,但我不知道如何同时映射和重新编码。我应该在ffmpeg中输入什么命令才能实现这个目标?

另外,ac3和ac3-a52有什么区别? Apple TV仍然可以通过ac3-a52还是必须转换为ac3?

2 个答案:

答案 0 :(得分:11)

这对我有用:

ffmpeg -y -i Source.mkv -map 0:v -c:v copy -map 0:a -c:a copy -map 0:a -strict -2 -c:a aac out.mkv
  • -y - 覆盖输出文件的全局选项(如果已存在)。
  • -map 0:v - 将第一个输入中的视频流指定为输出文件的来源。
  • -c:v copy - Stream copy视频。这只是将输入复用到输出。不会发生重新编码。
  • -map 0:a - 将第一个输入的音频流指定为输出文件的来源。
  • -c:a copy - Stream copy音频。这只是将输入复用到输出。不会发生重新编码。
  • -strict -2 -c:a aac - 使用原生FFmpeg AAC音频编码器。需要-strict -2作为您确认编码器被指定为实验的方式。它不是一个伟大的编码器,但在更高的比特率下也不算太糟糕。

根据wikipedia,AC3和ATSC A / 52之间没有区别:第一个是编解码器的名称,第二个是指定AC3编解码器的标准名称。也许有人对此有更多的了解?

答案 1 :(得分:1)

我和OP一样,但是使用的是m4v容器。我正在使用MacPorts" nonfree" ffmpeg的变体,以便我可以使用libfaac,它提供比内置AAC编码器更好的音频质量,并且也有与@dkam相同的问题。我结束使用的命令行是这样的:

ffmpeg -i input.m4v -map 0:v -c:v copy -map 0:a -c:a:0 copy -map 0:a -c:a:1 libfaac output.m4v

(视频用于在iPad上播放,似乎无法处理ac3。)