使用 h264 和 aac,我一直在尝试使用新的球座多路复用器。
它要么抱怨缺少 aac_adtstoasc bsf,要么如果设置了 global_header,则抱怨缺少 h264_mp4toannexb bsf。但是,我找不到为一个输出添加 bsf 而不为另一个输出添加的方法:像往常一样添加它适用于两个输出,而多路复用器选项(介于 之间[]
)不接受 bsf。
ffmpeg 团队是否 a) 对该功能的记录不充分,或者 b) 导致这种输出组合无法实现?
答案1
在 ffmpeg 2.0 或更低版本中这是不可能的。2.1 版中添加了对使用 tee 的比特流过滤器的支持。
‘bsfs[/spec]’
指定要应用于指定输出的比特流过滤器列表。可以通过将流说明符附加到以 / 分隔的选项来指定给定比特流过滤器应用于哪些流。如果未指定流说明符,则比特流过滤器将应用于输出中的所有流。
可以指定多个比特流过滤器,以“,”分隔
ffmpeg \
-i in.mp4 \
-c:v libx264 \
-c:a libfaac \
-flags +global_header \
-bsf:v dump_extra \
-map 0 \
-f tee '[f=mp4:bsfs=aac_adtstoasc]out.mp4|[f=mpegts]out.ts'