2011-04-03 154 views
4

輸入數據是一個表示h.264幀的字節數組。該幀由一個切片(不是多層幀)組成。h.264字節流解析

所以,據我瞭解,我可以像切片一樣處理這個幀。切片具有頭部和切片數據 - 宏塊,每個宏塊具有其自己的頭部。

所以我要解析的字節數組提取幀數,幀的類型,量化係數(我的理解每個宏塊都有自己的係數?還是我錯了?)

你能不能告訴我,在那裏我可以得到更多有關解析h.264幀字節的詳細信息。

(其實我讀過的標準,但它是不是很具體,我迷路了。)

感謝

+0

輸入數據是代表h.264幀的字節數組。該幀由一個切片(不是多層幀)組成。 (這些是我的問題的限制) – stemm 2011-04-03 09:28:43

+0

嘗試查看ISO/IEC 14496-15 – VitalyVal 2011-04-03 10:00:23

+0

什麼是h.264m?我的意思是 - h.264m是H.264的一些擴展? – anatolyg 2011-04-03 11:05:00

回答

15

H.264標準是一個有點難以閱讀,所以這裏有一些提示。

  • 閱讀附錄B;確保您的輸入與起始碼開始
  • 閱讀9.1節:你會需要它下面所有的
  • 條首部的部分中描述7.3.3
  • 「幀數」並沒有明確的編碼片頭; frame_num接近你可能想要的。
  • 「框架式」大概相當於的slice_type(在切片報頭中的第二個值,所以最容易解析,你一定要與這一個開始)
  • 「量化係數」 - 你的意思是「量化參數「?如果是,準備編寫一個完整的H.264解析器(或重用現有的解析器)。查看第9.3節,瞭解H.264分析器的複雜性。
6

標準很難閱讀。您可以嘗試使用C(C99)庫分析現有H.264視頻流解碼軟件的源代碼,如ffmpeg。例如,有avcodec_decode_video2函數記錄here。你可以得到完整的工作C(打開文件,獲得H.264流,迭代幀,轉儲信息,獲取色彩空間,保存幀作爲原始PPM圖像等)here。另外還有很棒的"The H.264 Advanced Video Compression Standard"這本書,它解釋了「人類語言」中的標準。另一種選擇是嘗試Elecard StreamEye Pro軟件(有試用版),它可以給你一些額外的(視覺)視角。

4

事實上,閱讀H.264視頻編碼文檔的過程要簡單得多(這只是我的觀點)。 ffmpeg是非常好的庫,但它包含很多優化的代碼。最好看看H.264編解碼器和官方文檔的參考實現。 http://iphome.hhi.de/suehring/tml/download/ - 這是JM編解碼器實現的鏈接。 嘗試分離解碼過程的級別,例如包含NAL單元(SPS,PPS,SEI,IDR,SLICE等)的傳輸層。比你需要實現VLC引擎(主要是0範圍的exp-Golomb碼)。比非常困難和強大的編解碼器稱爲CABAC(上下文自適應算術二進制編解碼器)。這是非常棘手的任務。解複用過程(解包視頻數據之後)也很複雜。你需要完全理解這些模塊。 祝你好運。

+0

感謝偉大的指點! – stemm 2012-08-12 08:04:52

+0

不客氣! – t0k3n1z3r 2012-08-12 09:32:29