如何在FFmpeg的tee选项中为比特流滤镜传递参数?
解决FFmpeg Tee Muxer中比特流滤镜(BSF)的参数传递问题
嘿,我懂你碰到的这个麻烦——自己开发的BSF单独用完全没问题,一结合tee分流就参数传不进去,这确实是tee的语法细节坑人!
先给你直接上能跑通的命令写法,再给你拆解问题出在哪:
./ffmpeg -i input.mp4 -map 0:v -vcodec copy -an -f tee "[bsfs=v:my_bsf=1]output1.264|[bsfs=v:my_bsf=2]output2.264" -y
核心修正点:
- tee分支里的BSF参数格式是
bsfs=v:滤镜名=参数,而非你之前写的bsfs/v=。这里的v:明确指定给视频流应用滤镜,对应你单独使用时的-bsf my_bsf=1(因为只处理视频,默认是视频流)。 - 每个输出分支必须用
[]完整包裹,分支之间用|分隔,你之前的命令里[bsfs...没闭合括号,这肯定会导致解析失败。
额外实用小贴士:
- 如果你的BSF需要多个参数,直接沿用FFmpeg的参数格式即可,比如
my_bsf=paramA=foo:paramB=bar,把这段放到bsfs=v:后面就行。 - 要是不确定滤镜有没有生效,可以加
-v debug参数跑命令,查看日志里的BSF加载信息,确认参数是否被正确解析:./ffmpeg -v debug -i input.mp4 -map 0:v -vcodec copy -an -f tee "[bsfs=v:my_bsf=1]output1.264" -y - 记得加上
-y参数自动覆盖输出文件,省得每次手动确认。
内容的提问来源于stack exchange,提问作者Benji Joa
相关产品推荐
相关产品推荐

