FFMPEG:向视频文件添加额外音轨

3
我有两个视频文件,分别拥有以下流:
文件1:
流#0:0(deu):音频:AAC(LC)(mp4a / 0x6134706D),48000 Hz,立体声,fltp,126 kb / s(默认) 流#0:1(deu):音频:AC3(ac-3 / 0x332D6361),48000 Hz,5.1(side),fltp,384 kb / s 流#0:2(eng):视频:h264(High)(avc1 / 0x31637661),yuv420p(tv,bt709),1920x1080 [SAR 1:1 DAR 16:9],4971 kb / s,23.98 fps,23.98 tbr,2997 tbn,5994 tbc(默认) 流#0:3:视频:mjpeg,yuvj420p(pc,bt470bg / unknown / unknown),480x480 [SAR 72:72 DAR 1:1],90k tbr,90k tbn,90k tbc
文件2:
流#0:0(eng):音频:AAC(LC)(mp4a / 0x6134706D),48000 Hz,立体声,fltp,126 kb / s(默认) 流#0:1(eng):音频:AC3(ac-3 / 0x332D6361),48000 Hz,5.1(side),fltp,384 kb / s 流#0:2(eng):视频:h264(High)(avc1 / 0x31637661),yuv420p(tv,bt709),1920x1080 [SAR 1:1 DAR 16:9],4925 kb / s,23.98 fps,23.98 tbr,23976 tbn,47952 tbc(默认) 流#0:3(eng):字幕:eia_608(c608 / 0x38303663),1920x1080,0 kb / s 流#0:4:视频:mjpeg,yuvj420p(pc,bt470bg / unknown / unknown),480x480 [SAR 72:72 DAR 1:1],90k tbr,90k tbn,90k tbc
这两个文件拥有完全相同的视频内容,但是第一个视频有德语音轨,而第二个视频有英语音轨。
如何从德语视频文件中提取音频轨道并将其添加到英语视频文件中,同时不失去英文字幕并能够在媒体播放器中选择这些音频轨道?
我搜索了相关信息,找到了多个类似问题的答案,但没有一个有效:一些只包含一个音频轨道,一些同时播放两个音轨。

我不确定这个问题是否应该在Super User上问,但由于Stack Overflow上已经有很多关于ffmpeg的问题,所以我在这里提出问题。


给这个问题的新读者注意:这不是 Stack Overflow 上的主题。请参阅 帮助页面,特别是名为“我可以在这里问什么样的话题?”和“我应该避免问什么类型的问题?”的部分。 - Some programmer dude
1个回答

2
重要的一点是需要注意,FFmpeg不能向文件中添加内容,它必须一次性创建一个包含流、设置和元数据的新文件。这使得它成为一个解决不需要创建新文件的问题的好程序。
ffmpeg -i FILE1 \
     -i FILE2 \
     -map 1:2 -map 1:0 -map 1:1 -map 0:0 -map 0:1 -map 1:3 -map 1:4 \
     -c copy \
     -disposition:a -default -disposition:a:0 default \
     -disposition:v -default -disposition:v:0 default \
     OUTPUT

以上命令的信息可以在FFmpeg文档5.4主要选项5.11高级选项中找到。

最终生成的输出文件将会按如下方式映射流:

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 4925 kb/s, 23.98 fps, 23.98 tbr, 23976 tbn, 47952 tbc (default)
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 126 kb/s (default)
Stream #0:2(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:3(deu): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 126 kb/s
Stream #0:4(deu): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:5(eng): Subtitle: eia_608 (c608 / 0x38303663), 1920x1080, 0 kb/s (default)
Stream #0:6: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 480x480 [SAR 72:72 DAR 1:1], 90k tbr, 90k tbn, 90k tbc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接