我有两个视频:a.mp4
和b.mp4
。我想缩放a.mp4
、修剪前 10 秒和后 10 秒,然后b.mp4
添加字幕,然后b.mp4
将两个视频(缩放后的 a.mp4 和修剪/硬字幕后的 b.mp4)合并为一个。这是我的脚本:
ffmpeg -i a.mp4 -i b.mp4 -filter_complex
'[0:v]scale=1280:720[in1];[1:v]trim=0:10,trim=110:120,ass=subtitle.ass[in2];
[in1][in2] concat=n=2:v=1:a=1 [out]'
-map [out] -c:v libx264 output.mp4
(120 是 b.mp4 的长度(秒))
但它给了我一个错误:
Media type mismatch between the 'Parsed_ass_2' filter output pad 0 (video) and the 'Parsed_concat_3' filter input pad 1 (audio) [AVFilterGraph @ 0x406c3c0] Cannot create the link ass:0 -> concat:1
答案1
使用
ffmpeg -i a.mp4 -i b.mp4
-filter_complex '[0:v]scale=1280:720,setsar=1[in1];
[1:v]ass=subtitle.ass,trim=10:110,setpts=PTS-STARTPTS,setsar=1[in2];
[1:a]atrim=10:110,asetpts=PTS-STARTPTS[1a];
[in1][0:a][in2][1a] concat=n=2:v=1:a=1 [v] [a]'
-map [v] -map [a] -c:v libx264 output.mp4
由于您也在连接音频,因此过滤器需要与每个视频流配对的音频流。