使用 FFmpeg 应用多个过滤器和输入

使用 FFmpeg 应用多个过滤器和输入

我有两个视频:a.mp4b.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

由于您也在连接音频,因此过滤器需要与每个视频流配对的音频流。

相关内容