ffmpeg - 转换多轨mp4的一个音轨

ffmpeg - 转换多轨mp4的一个音轨

我有几个带有两个音轨的 mp4,一个是 aac 格式的英文音轨,另一个是 dts 格式的法语音轨。

现在我想转变仅有的法国 dts 到 eac3使用单个 ffmpeg 命令。

我用

ffmpeg -hide_banner -i input.mp4 ^
             -map_metadata -1 ^
             -map 0:0 -c:v copy ^
             -map 0:1 -c:a copy ^
             -map 0:2 -c:a eac3 -b:a 1536k ^
             -metadata:s:a:0 language=eng ^
             -metadata:s:a:0 title="Stereo" ^
             -metadata:s:a:1 language=fra ^
             -metadata:s:a:1 title="Stereo" ^
output.mp4

效果很好,但它会转换两个音轨到 eac3,而不是保留第一个不变...命令中有什么错误?

(Windows 10 下的 ffmpeg 版本 2023-12-23-git-f5f414d9c4-full_build-www.gyan.dev)

答案1

经过一番研究(Alain 给我指明了正确的方向),正确的命令是

ffmpeg -hide_banner -i input.mp4 ^
         -map_metadata -1 ^
         -map 0:0 -c:v copy ^
         -map 0:1 -c:a:0 copy ^
         -map 0:2 -c:a:1 eac3 -b:a:1 1536k ^
         -metadata:s:a:0 language=eng ^
         -metadata:s:a:0 title="Stereo" ^
         -metadata:s:a:1 language=fra ^
         -metadata:s:a:1 title="Stereo" ^
output.mp4

两个都-c:a:1 eac3-b:a:1 1536k是需要的,如果您只使用 -b:a 而不是 -b:a:1,则无论编解码器如何,所有音轨都会设置为 1536k...

-地图-元数据仅当您重新映射轨道和/或设置元数据时才需要语句。

相关内容