我想使用 ffmpeg 制作一个空白(黑色)视频,其中包含不同语言的音频和字幕。我可以 (1) 制作黑色视频,(2) 为其添加 3 个音轨,但我无法 (3) 为其添加字幕。尽管所有 3 个音频都存在并且可以切换,但没有字幕出现。
(1)我使用以下工具制作了黑色(无声)视频:
ffmpeg -loop 1 -i black.jpg -i silent.mp3 -acodec copy -shortest -vf scale=1280:720 silent.mov
其中 black.jpg 是一张 1280x720 的黑色图像,而 silent.mp3 有 5 分钟的静音时间
(2)我使用以下命令添加了 3 条音轨(意大利语、法语、德语):
ffmpeg -i silent.mov -i ita.mp3 -i fre.mp3 -i ger.mp3 -map 0:v -map 1:a -map 2:a -map 3:a -metadata:s:a:0 language=ita -metadata:s:a:1 language=fra -metadata:s:a:2 language=ger ita-fre-ger.mov
(3)我尝试使用以下方法为每种语言添加字幕:
ffmpeg -i ita-fre-ger.mov -i ita.srt -i fre.srt -i ger.srt -map 0 -map 1 -map 2 -map 3 -c copy -c:s mov_text -metadata:s:s:0 language=ita -metadata:s:s:1 language=fra -metadata:s:s:2 language=ger final.mov
只是最后这条命令不起作用。我该如何添加字幕?我很乐意使用 .mp4 而不是 .mov,但它也不起作用。
更新:感谢@Ricardo Bohner 为我解答。为了完整起见,这里介绍一下我如何将其应用于我的情况,从而一步到位地获得我想要的结果:
ffmpeg -f lavfi -i "color=color=black:s=1280x720" -i ita.srt -i fre.srt -i ger.srt -i ita.mp3 -i fre.mp3 -i ger.mp3 -map 0:v -map 1:s:0 -map 2:s:0 -map 3:s:0 -map 4:a -map 5:a -map 6:a -metadata:s:a:0 language=ita -metadata:s:a:1 language=fra -metadata:s:a:2 language=ger -metadata:s:s:0 language=ita -metadata:s:s:1 language=fra -metadata:s:s:2 language=ger -c:s:0 mov_text -c:s:1 mov_text -c:s:2 mov_text -shortest test.mp4
对我来说,这适用于 mp4
当我尝试创建与 *.mov 文件相同的文件时,出现以下错误:
严重错误,文件持续时间对于时间基准来说太长,此文件无法以 7.9kbits/s 速度=21.1x 使用 QuickTime 播放。使用 -video_track_timescale 选择不同的时间基准或不同的容器格式
但 mov 文件在 VLC 播放器中仍可正常播放