怎么說(shuō)我也算是做協(xié)議開(kāi)發(fā)的,14229,15765是我的專業(yè)內(nèi)容。但是關(guān)于解碼和文件格式一般都是有協(xié)議的,網(wǎng)上搜索了下spec名稱為ISO14496,有一系列的白皮書呢!
快速入門了下MPEG4標(biāo)準(zhǔn)中的文件格式,box是一個(gè)主要概念。網(wǎng)上有ISO協(xié)議下載,也有現(xiàn)成的解析分析工具。我了解一個(gè)大概,比如moov box只有一個(gè),包括了音頻和視頻的總信息。trak box至少有一個(gè),一般為2個(gè),一個(gè)為音頻一個(gè)為視頻信息。utda box保存的是幀的數(shù)據(jù)。

一,MPEG-4媒體文件主要信息
- MPEG-4標(biāo)準(zhǔn)為ISO14496系列,MP4格式在-12文件中可以看到。
- offset
moov box中記錄的每幀音視頻數(shù)據(jù)位置信息,實(shí)際上都在mdat box中,通過(guò)解析moov box來(lái)獲取到每幀音視頻數(shù)據(jù)具體位置后,使得播放器能方便的拖拉進(jìn)度條。 - DTS和PTS
avcC box指定了該流的編碼類型為H264
stsc stsz stco三個(gè)box用于保存每幀視頻或音頻數(shù)據(jù)在文件中的保存位置。
stts stss ctts三個(gè)box用于保存媒體數(shù)據(jù)和時(shí)間戳的對(duì)應(yīng)關(guān)系。 - IPB幀的概念
I幀表示關(guān)鍵幀,P幀為向前引用,B幀為雙向(前后)引用。
二,MPEG-4媒體文件參考網(wǎng)址
1.MPEG-4標(biāo)準(zhǔn)
2.mp4文件格式解析
3.MP4格式解析二 ftyp/mvhd
4.mp4封裝格式各box類型講解及IBP幀計(jì)算
5.MP4格式分析之我見(jiàn)
6.IBP幀的定義
三,H.264協(xié)議
其實(shí)就是14496-10。H264功能分為兩層,VCL(視頻編碼層)和 NAL(網(wǎng)絡(luò)提取層)
SODB 數(shù)據(jù)比特串 ---->最原始的編碼數(shù)據(jù),即VCL數(shù)據(jù)
RBSP 原始字節(jié)序列載荷
EBSP 擴(kuò)展字節(jié)序列載荷 (會(huì)填充0x30)

H264的碼流分6層,其中宏塊和IPB相關(guān)
1幀 = 1個(gè)或n個(gè)片
1片 = n個(gè)宏塊
1宏塊 = 16x16yuv數(shù)據(jù)

宏塊結(jié)構(gòu)

mb_type 確定該 MB 是幀內(nèi)或幀間(P 或 B)編碼模式,確定該 MB 分割的尺寸,mb_pred 確定幀內(nèi)預(yù)測(cè)模式

解碼順序,由于B依賴前后幀,所以要先把后面的P幀先解碼。若是網(wǎng)絡(luò)直播,一般B幀出現(xiàn)的比較少,需要保證實(shí)時(shí)性。
運(yùn)動(dòng)補(bǔ)償,幀內(nèi)預(yù)測(cè),殘差補(bǔ)償?shù)人惴ㄟ€不太清楚,之后慢慢了解,慢慢看paper。今天先入門。
四,H.264解碼工具
H.264 Visa 和StreamEye我都用了下。
五,參考網(wǎng)址
如何學(xué)習(xí)H264協(xié)議
H264基礎(chǔ)簡(jiǎn)介
H264格式 詳細(xì)介紹