FFmpeg里的Bitstream Filter

  • 2019 年 10 月 11 日
  • 筆記

Bitstream Filter

Bitstream Filter: A bitstream filter operates on the encoded stream data, and performs bitstream level modifications without performing decoding. 1. 比特流濾波器作用在編碼後的數據上,而不是未壓縮的數據。 2. 在不解碼的基礎上執行比特流級別的修改。

示例1:

ffmpeg -i input.mp4 -codec copy -bsf:v h264_mp4toannexb output.ts

這個是把mp4容器格式改為ts容器格式,需要把h.264的封裝格式從mp4改成annexb。

h.264編碼有兩種封裝格式

  1. 一種是annexb模式, 它是傳統模式, 有startcode, SPS和PPS在Element Stream中.
  2. 另一種是mp4模式, 一般Mp4, MKV, AVI都沒有startcode, SPS和PPS以及其他資訊被封裝容器中. 每一幀前面是這一幀的長度值, 很多解碼器只支援annexb模式, 因此需要對Mp4模式做轉換.

再說下為什麼另一種封裝格式叫annexb,是因為這種封裝格式定義在the Annex B of the ITU-T H.264 specification

示例2:

ffmpeg -i in.264 -c copy -bsf:v trace_headers -f null - 2> NALUS.txt

支援 AV1,H.264, H.265, (M)JPEG, MPEG-2, VP9(VP8不支援)

Log trace output containing all syntax elements in the coded stream headers (everything above the level of individual coded blocks). This can be useful for debugging low-level stream issues. 可以用於底層碼流調試。