如何使用 ffmpeg 在一行中添加字幕并连接视频文件?

如何使用 ffmpeg 在一行中添加字幕并连接视频文件?

我有 3 个视频:1387432825.avi、1387435884.avi、1387436066.avi 和 3 个视频字幕:part1.ass、part2.ass、part3.ass 我尝试使用命令为每个视频添加字幕:

ffmpeg -i 1387432825.avi -vf 'ass=part1.ass' -preset ultrafast -y part1.mp4
ffmpeg -i 1387435884.avi -vf 'ass=part2.ass' -preset ultrafast -y part2.mp4
ffmpeg -i 1387436066.avi -vf 'ass=part3.ass' -preset ultrafast -y part3.mp4

然后,我使用命令连接 3 个输出:

ffmpeg -i part1.mp4 -i part2.mp4 -i part3.mp4 -filter_complex 'concat=n=3' -preset ultrafast -y total.mp4

最后,我有了带字幕的 total.mp4 !!! 但是我有 4 个命令用于 3 个视频文件。我想用 1 个命令来完成。有什么帮助吗?

P/S:我尝试使用此命令:

ffmpeg  -i 1387432825.avi -i 1387435884.avi -i 1387436066.avi -filter_complex 'concat=n=3[join];[join]ass=total.ass' -preset ultrafast -y final.mp4

但我认为这对我的作品不利。

答案1

我想我应该是这样的:

fmpeg  -i 1387432825.avi -i 1387435884.avi -i 1387436066.avi\
-filter_complex \
"[0:v]ass=part1.ass[video0];[1:v]ass=part1.ass[video1];\
[2:v]ass=part1.ass[video2];\
[video0][video1][video2]concat=n=3[out]" \
-map [out] -preset ultrafast -y final.mp4

如果需要声音,您还应该对音频流进行相同的连接和映射。希望对您有所帮助。

答案2

我用:

ffmpeg -threads 0 -i 1387432825.avi -i 1387436066.avi -i 1387435884.avi -filter_complex 'ass=part1.ass[1];ass=part2.ass[2];ass=part3.ass[3];[1][2][3]concat=n=3' -preset ultrafast -y final.mp4

相关内容