FFmpeg Bitstream Filter學習記錄

近日學習騰訊學院有關“FFmpeg 介紹與開發”的課程,裏面講到近兩年新引入的“Bitstream Fillter”功能很有用。下面簡單記錄一下課程內容,再結合網絡查詢到的相關資料,小結一下。

相關鏈接:

http://www.ffmpeg.org/ffmpeg-bitstream-filters.html

FFmpeg 官網介紹:

A bitstream filter operates on the encoded stream data, and performs bitstream level modifications without performing decoding.

  1. 比特流濾波器對編碼後的數據進行操作(壓縮碼流)。
  2. 不進行解碼操作,但是支持比特流級別的修改。

模版操作:

ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT

示例操作1:mp4 轉 ts 格式(annexb字節流格式)

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

annexb 和 mp4的區別可以參考:

https://www.jianshu.com/p/909071e8f8c6
H.264碼流分Annex-B和AVCC兩種格式。
> 1別名
AVCC格式 也叫AVC1格式,MPEG-4格式,字節對齊,因此也叫Byte-Stream Format。用於mp4/flv/mkv,
Annex-B格式 也叫MPEG-2 transport stream format格式(ts格式),
Annex-B 附錄B, 指ITU-T的 Recommendation(h.264和h.265)在附錄B中規定碼流格式。
> 2 結構區別:
區別有兩點:一個是參數集(SPS, PPS)組織格式;一個是分隔。
Annex-B:使用start code分隔NAL(start code爲三字節或四字節,0x000001或0x00000001,一般是四字節);SPS和PPS按流的方式寫在頭部。
AVCC:使用NALU長度(固定字節,通常爲4字節)分隔NAL;在頭部包含extradata(或sequence header)的結構體。

示例操作2:不解碼的情況下,跟蹤標頭語法元素

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

用於日誌跟蹤輸出,NALUS.txt 內可以包含編碼流標頭中的所有語法元素(高於單個編碼塊的水平)。 對於調試底層流問題很有效。

比如,可以查看SPS
在這裏插入圖片描述
可以查看Slice Header等等。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章