FFMPEG concat过滤器,不匹配任何流



这是我的命令

ffmpeg -i 'Five.mov' -i 'top5.mov' -i 'Four.mov' -i 'top4.mov' -i 'Three.mov' 
-i 'top3.mov' -i 'Two.mov' -i 'top2.mov' -i 'One.mov' -i 'top1.mov' anullsrc 
-filter_complex "[0:v] [0:a] [1:v] [1:a] [2:v] [2:a] [3:v] [3:a] [4:v] [4:a] [5:v] [5:a] [6:v] [6:a] [7:v] [7:a] [8:v] [8:a] [9:v] [9:a] concat=n=10:v=1:a=1 [vv] [aa]" 
-map "[vv]" -map "[aa]" 'top5final.mov' 

Five.movFour.movThree.movTwo.movOne.mov没有任何音频,只有视频。其余的视频都有音频。

这是筛选器图描述[0:v][0:a][1:v][1:a][2:v][2:a][3:v][3:a][4:v][5:v][5:a][6:v][6:a][7:v][7:a][8:v][8:a][9:v][9:a]concat=n=10:v=1:a=1[vvv][aa]中返回的错误

我该如何解决?

concat过滤器需要有一个比相应的视频过滤器更短的音频流,我怀疑你伪造的anullsrc参数是为了充当丢失的音频流。。。相反,您需要为丢失的音频流定义一个输入过滤器,并将其多次提供给concat过滤器,作为文件的音频流w/out audio:

ffmpeg -i 'Five.mov' -i 'top5.mov' -i 'Four.mov' -i 'top4.mov' -i 'Three.mov' 
-i 'top3.mov' -i 'Two.mov' -i 'top2.mov' -i 'One.mov' -i 'top1.mov' 
-f lavfi -i aevalsrc=0:n=1:c=channel_layout:s=sample_rate,aformat=sample_fmt 
-filter_complex "[0:v][10:a][1:v][1:a][2:v][10:a][3:v][3:a][4:v][10:a] 
[5:v][5:a][6:v][10:a][7:v][7:a][8:v][10:a][9:v][9:a] 
concat=n=10:v=1:a=1[vv][aa]" 
-map [vv] -map [aa] 'top5final.mov' 

并不是说匹配的流属性要求适用于所有流。因此,如果现有流的属性不相同,则需要用适当的滤波器(即,format用于视频像素格式,scale用于视频帧大小,aformat用于音频采样格式、通道布局和采样率,以及可选的fps用于视频帧率(对其进行预处理。

参见文件

[编辑以纳入@Gyan的评论]

最新更新