我有几个带有两个音轨的 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...
这-地图和-元数据仅当您重新映射轨道和/或设置元数据时才需要语句。