我试图将两个视频文件与concat,blend和amx过滤器合并。
当我仅使用视频流时,我已经成功了两个视频。 之后添加音频流的代码(过滤器脚本) Ffmpeg无法正常工作。
-
两个视频淡入淡出(很好)
ffmpeg -y -i "A.mp4" -i "B.mp4" -filter_complex "[0:v]split[v000][v010];[1:v]split[v100][v110];[v000]trim=0:17[v001]; [v010]trim=17:27[v011t];[v011t]setpts=PTS-STARTPTS[v011];[v100]trim=0:10[v101]; [v110]trim=10:50[v111t];[v111t]setpts=PTS-STARTPTS[v111];[v101] [v011]blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1- (if(gte(T,T/10)))'[outv];[v001][outv][v111] concat=n=3[outv2]" -vcodec libx264 -map [outv2] -t 50 d:\Output\1.mp4
-
1个音频流
ffmpeg -y -i "A.mp4" -i "B.mp4" -filter_complex "[0:v]split[v000][v010];[1:v]split[v100][v110];[v000]trim=0:17[v001];[v010]trim=17:27[v011t];[v011t]setpts=PTS-STARTPTS[v011];[v100]trim=0:10[v101];[v110]trim=10:50[v111t];[v111t]setpts=PTS-STARTPTS[v111];[0:a]asplit[a000][a010];[1:a]asplit[a100][a110];[a000]atrim=0:17[a001];[v010]atrim=17:27[a011t];[a011t]asetpts=PTS-STARTPTS[a011];[a100]atrim=0:10[a101];[a110]atrim=10:50[a111t];[a111t]asetpts=PTS-STARTPTS[a111];[v101][v011]blend=all_expr='A*(if(gte(T,T/10))+B*(1-(if(gte(T,T/10)))'[outv];[a101][a011]amix=inputs=2:duration=first:dropout_transition=3[outa];[v001][outv][v111] [a001][outa][a111] concat=n=6:v=1:a=1:unsafe=1 [outv2][outa2]" -vcodec libx264 -acodec aac -map [outv2] -map [outa2] -t 50 d:\Output\1.mp4
错误消息 'Parsed_blend_16'过滤器输出板0(视频)和'Parsed_concat_18'过滤器输入板1(音频)之间的媒体类型不匹配 [AVFilterGraph @ 026d3680]无法创建链接blend:0-> concat:1 初始化复杂过滤器时出错。 参数无效
如何解决?
ps。我认为过滤器脚本太复杂了。 您能告诉我更简单的方法如何在ffmpeg中使用crossfade吗?