我想使用 FFmpeg为一个已经包含意大利语、法语和德语的视频(称为)添加英语音频和字幕轨道(eng.mp3
和) 。关键是最终的视频能够支持在多种语言的音频和字幕轨道之间切换。eng.srt
3.mp4
总而言之,我想要:3.mp4 + eng.mp3 + eng.srt → 3plus1.mp4
我尝试过这个但是没有用::
ffmpeg -i 3.mp4 -i eng.mp3 -i eng.srt \
-map 0:v -map 0:a -map 1:a -map 2:s:0 \
-metadata:s:a:0 language=eng -metadata:s:s:0 language=eng \
-c:s:0 mov_text -shortest 3plus1.mp4
我可以使用 4 种语言(4.mp4
)从头开始制作视频,如下.mp3
所示.srt
(请注意,视频部分是即时生成的,仅为黑色背景;这使文件保持较小以进行测试,而视频不是这里的重点):
这有效:ita.mp3 + fre.mp3 + ger.mp3 + eng.mp3 + ita.srt + fre.srt + ger.srt + eng.srt → 4.mp4
ffmpeg -f lavfi -i "color=color=black:s=1280x720" \
-i ita.mp3 -i fre.mp3 -i ger.mp3 -i eng.mp3 \
-i ita.srt -i fre.srt -i ger.srt -i eng.srt \
-map 0:v -map 1:a:0 -map 2:a:0 -map 3:a:0 -map 4:a:0 \
-map 5:s:0 -map 6:s:0 -map 7:s:0 -map 8:s:0 \
-metadata:s:a:0 language=ita -metadata:s:a:1 language=fra -metadata:s:a:2 language=ger -metadata:s:a:3 language=eng \
-metadata:s:s:0 language=ita -metadata:s:s:1 language=fra -metadata:s:s:2 language=ger -metadata:s:s:3 language=eng \
-c:s:0 mov_text -c:s:1 mov_text -c:s:2 mov_text -c:s:3 mov_text \
-shortest 4.mp4
我不知道如何上传我用于测试的文件,但我发现一个名为 disroot 的网站看起来允许文件共享。
此链接是count.zip
我创建的包含所有用于测试的文件的档案。
编辑:@Alain1A45 提供的命令几乎有效:
ffmpeg -i 3.mp4 -i eng.mp3 -i eng.srt -map 0:v -map 0:a -map 1 -map 0:s -map 2 -c copy -c:s:3 mov_text -metadata:s:a:3 language=eng -metadata:s:s:3 language=eng -shortest 3plus1.mp4
我说“几乎可用”,是因为它确实添加了额外的音频(eng.mp3)和字幕(eng.srt),但英语音频在 Mac OS 的 QuickTime 播放器和 iPhone 版 Documents (by Readdle) 的视频播放器中都无法显示。由于我一直都在用这些播放器,所以我还在寻找解决方案。
我知道有英文音频,因为我可以用 ffmpeg 命令看到它,而且 VLC 播放器在 Mac OS 和 iOS 上都能播放。可惜的是,我发现 VLC 播放器用起来很不方便。