首页 > 解决方案 > 如何在音频流中使用混合和连接过滤器?

问题描述

我尝试将两个视频文件与 concat、blend 和 amx 过滤器结合起来。

当我只使用视频流时,我成功了两个视频。然后添加音频流后,代码(过滤器脚本)Ffmpeg 不起作用。

  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];[v101] [v011]blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1- (if(gte(T,10),1,T/10)))'[outv];[v001][outv][v111] concat=n=3[outv2]" -vcodec libx264 -map [outv2] -t 50 d:\Output\1.mp4

  2. 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,10),1,T/10))+B*(1-(if(gte(T,10),1,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] 无法创建链接混合:0 -> 连接:1 初始化复杂过滤器。无效的论点

如何解决?

附言。我认为过滤器脚本太复杂了。你能告诉我更简单的方法如何使用 ffmpeg 交叉淡入淡出吗?

标签: cvideoffmpegblend

解决方案


已解决 如果您想同时在脚本中使用视频和音频流,您应该在编写视频流脚本之后再编写音频。

"[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,10),1,T/10)))'[outv];
[v001][outv][v111] concat=n=3 [outv2];
[0:a]asplit[a000][a010];[1:a]asplit[a100][a110];[a000]atrim=0:17[a001];
[a010]atrim=17:27[a011t];[a011t]asetpts=PTS-STARTPTS[a011];
[a100]atrim=0:10[a101];[a110]atrim=10:50[a111t];
[a111t]asetpts=PTS-STARTPTS[a111];
[a101][a011]acrossfade=d=10[outa];
[a001][outa][a111] concat=n=3:v=0:a=1:unsafe=1 [outa2]"

推荐阅读