c - 如何在音频流中使用混合和连接过滤器?
问题描述
我尝试将两个视频文件与 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,10),1,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,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 交叉淡入淡出吗?
解决方案
已解决 如果您想同时在脚本中使用视频和音频流,您应该在编写视频流脚本之后再编写音频。
"[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]"
推荐阅读
- magento - Owl Carousel in Magento 2 not working correctly
- sql - 一旦违反条件,停止存储过程的进一步执行?
- elasticsearch - Elasticsearch 全文查询有时会花费太多时间
- r-markdown - 在 Rmarkdown 中嵌入 netlogoweb html 文件的问题
- php - custom.css.php 文件中的 Wordpress get_theme_mod 不起作用
- excel - PowerShell 试图转换为整数而不是字符串
- wagtail - 在 WagTail 中呈现具有初始值的表单
- python - InvalidArgumentError:没有注册 OpKernel 来支持 Op 'CudnnRNN'
- python - PyGTK 调整图像大小
- javascript - 如何将单个类添加到 amchart 中的饼图部分并使用它们来切换另一个元素?