ffmpeg -i stereoaudio.wav -filter_complex "[0:a]atrim=start=0:duration=5[a1];[0:a]atrim=start=5:duration=17,asetpts=PTS-STARTPTS[b2];[b2]pan=stereo|c1=c1[c3];[a1][c3]concat=n=3:v=0:a=1[d4];[0:a]atrim=start=22:duration=0,asetpts=PTS-STARTPTS[e5];[d4][e5]concat=n=3:v=0:a=1[out1]" -map [out1] muteLeftfor17seconds.wav
ffmpeg -i stereoaudio.wav -filter_complex
"[0:a]atrim=start=0:duration=5[a1];
[0:a]atrim=start=5:duration=17,asetpts=PTS-STARTPTS[b2];
[b2]pan=stereo|c1=c1[c3];
[a1][c3]concat=n=3:v=0:a=1[d4];
[0:a]atrim=start=22:duration=0,asetpts=PTS-STARTPTS[e5];
[d4][e5]concat=n=3:v=0:a=1[out1]" -map [out1] muteLeftfor17seconds.wav
我编写了上述 ffmpeg 命令,希望能够接收立体声 wav 文件,并在选定的时间内使选定的频道静音。
每当我运行上述命令时,我都会收到一条错误消息,提示“无法在过滤器 Parsed_concat_4 上找到未标记输入 pad 2 的匹配流”
我对此进行了一些研究,发现“无法找到匹配的流”通常发生在流标签未正确对齐时,这可能是这种情况,但是我已经查看命令很长时间了,以至于一切都开始一起运行了,哈哈。任何想法都将不胜感激。
答案1
在[a1][c3]concat=n=3:v=0:a=1[d4]
和中[d4][e5]concat=n=3:v=0:a=1[out1]
,n
值必须与输入的数量相匹配,实际上是如图所示的 2。
无论如何,对于给定的用例,您只需使用 aeval 过滤器。
ffmpeg -i in.wav -af "aeval=0|val(1):c=same:enable='between(t\,5\,22)'" out.wav