MPEG-4格式和H.264(ISO14496)入門--Apple的學(xué)習(xí)筆記

怎么說(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ù)。

image.png

一,MPEG-4媒體文件主要信息

  1. MPEG-4標(biāo)準(zhǔn)為ISO14496系列,MP4格式在-12文件中可以看到。
  2. offset
    moov box中記錄的每幀音視頻數(shù)據(jù)位置信息,實(shí)際上都在mdat box中,通過(guò)解析moov box來(lái)獲取到每幀音視頻數(shù)據(jù)具體位置后,使得播放器能方便的拖拉進(jìn)度條。
  3. 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)系。
  4. 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)


image.png

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


image.png

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


image.png

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


image.png

解碼順序,由于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ì)介紹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容