h264是視頻裸流數據,它的結構是經過精心設計的,顯得精悍、復雜,初次接觸會感覺有些棘手。當然我們先得搜集有關資料。。。
網上的資料很多,不過都是一些博客,描述的只是數量不多的知識點,大多都是重復的,難以形成對h264結構相對完整的認識,甚至可能被誤導。我們可以選擇一些相對權威的書籍,至少大多數有關h264的問題在這些書里面都能找得到答案,也不容易出錯,晚上大多數博客其實也是抄這些書的。這里向大家推薦一本比較好的書--《畢厚杰 新一代視頻壓縮編碼標準H.264》
,網上都是可以下到的。
找到資料后就要花時間去消化了,我不建議直接去讀那些資料,一是這些資料比較枯燥難懂,一時間很難理解,囫圇吞棗的去讀基本沒有效果,轉眼就忘,頂多留下一點印象,浪費時間。另一個則會嚴重打擊學習積極性的,有勇氣的可以去嘗試。。。
自己嘗試去解碼一段h264裸流是比較有效果的,動手的過程會逐漸地知道哪些是重點,接下來我著重說下自己解碼遇到的一些問題,希望對大家有幫助。
解h264有兩個問題是比較棘手的,一是h264使用了哥倫布編碼,需要大家使用相應的解碼方式,還有就是解碼操作的最小單元是位,而我使用的語言最方便操作的單元是字節,這就帶來了一些麻煩。
我們解碼主要是0階有(無)符號哥倫布解碼、二進制位解碼十進制等等。哥倫布解碼的方法網上有很多,可以很快查到,所以這里不再復述。知道了解碼的方法后,就要有一種方法可以連續解碼數據,我因此而實現了一個工具類,用于完成各種格式的連續解碼工作,內部保存了粒度為位的指針,通過對字節進行位操作來實現,由于指針是內部維護的,外界不需要關心,因不用再擔心一些位的操作,顯得比較簡潔,如此就解決了解碼粒度為位的問題,又能連讀讀取解碼數據,剩下的就是根據碼流結構依次解碼數據了,這也是了解整個h264結構的過程。
為驗證自己的解碼過程是否正確,我們需要一些軟件的幫助。雷神分析h264的工具就不錯,我用的也是這個工具,大家可以試試。
萬事開頭難,我一直堅信功夫不負有心人。。。希望我的分享對大家有所幫助。
http://download.csdn.net/detail/u012129163/9753364 (這是我解碼h264所做的一些工作,包含測試文件、工程代碼、雷神的分析工具,以及一些文檔)