FFmpeg复杂滤镜报错Invalid stream specifier: v2原因咨询
错误原因分析:Invalid stream specifier: v2
你的FFmpeg命令报错核心原因是滤镜链中同一个输出流被重复直接引用,但未提前复制流。
具体看你的命令逻辑:
- 通过
[0:v][v1]overlay=50:50[v2];生成了流[v2] - 之后你同时把
[v2]用作两个滤镜步骤的输入:[v2]crop=200:200:400:400,boxblur=10:enable='between(t,5,12)'[v3];[v2][v3]overlay=400:400[v4];
在FFmpeg的filter_complex机制中,每个流只能被"消费"一次——当你第一次用[v2]生成[v3]后,这个流就被消耗掉了,第二次再引用[v2]时,FFmpeg找不到对应的流,就会抛出Invalid stream specifier: v2的错误。
修复方案
需要用split滤镜将[v2]复制为两个独立的流,再分别用于后续操作:
修改后的命令示例:
ffmpeg -i input.mp4 -filter_complex " [0:v]crop=100:100:50:50,boxblur=10:enable='between(t,0,5)'[v1]; [0:v][v1]overlay=50:50[v2]; # 将v2拆分为两个独立流v2a、v2b [v2]split[v2a][v2b]; [v2a]crop=200:200:400:400,boxblur=10:enable='between(t,5,12)'[v3]; [v2b][v3]overlay=400:400[v4]; [v4]crop=640:360:0:0,scale=-1:720[v5]; [v4][v5]overlay=0:0:enable='between(t,0,5)'[output]" -map "[output]" output-mixed-100.mp4
通过split生成的v2a和v2b是两个独立的流,分别对应原v2的内容,可分别用于后续滤镜操作,不会再出现流找不到的问题。
内容的提问来源于stack exchange,提问作者Aji Aneesh
相关产品推荐
相关产品推荐

