MP4 二 解復用器

2021-07-16 05:57:07 字數 2383 閱讀 6154

mp4(二)-解復用器

2:chunk和sample的關係,乙個chunk中有乙個或多個sample,乙個檔案有多個chunk,在stco中標記了chunk在

檔案中的絕對位置。不是相對於某乙個box.stsz標記了每乙個sample的大小,stsc則是chunk和sample的對應關係。

這裡有個問題就是stsc中有個 引數是first_chunk,這個是什麼意思呢?

first chunk samples per chunk sample description id

1                        4           1

4                        3           1

5                        4           1

8                        3           1

可以看出chunk1、chunk2、chunk3都有4個sample,chunk4有3個sample,chunk5、chunk6、chunk7有4個sample……

就是這個意思。

4:如果音訊是aac的則從mdat中取出來的資料既不是latm的也不是adts的,如果想轉成adts的則需要加乙個7位元組的頭,

每一幀都要加,這個頭根據的填寫根據,幀長度,聲道,取樣率有個下標:

//adts 頭中相對有用的資訊 取樣率、聲道數、幀長度

//adts頭

//typedef struct

// adts_header;

//•0: 96000 hz

//•1: 88200 hz

//•2: 64000 hz

//•3: 48000 hz

//•4: 44100 hz

//•5: 32000 hz

//•6: 24000 hz

//•7: 22050 hz

//•8: 16000 hz

//•9: 12000 hz

//•10: 11025 hz

//•11: 8000 hz

//•12: 7350 hz

//•13: reserved

//•14: reserved

//•15: frequency is written explictly

//•0: defined in aot specifc config

//•1: 1 channel: front-center

//•2: 2 channels: front-left, front-right

//•3: 3 channels: front-center, front-left, front-right

//•4: 4 channels: front-center, front-left, front-right, back-center

//•5: 5 channels: front-center, front-left, front-right, back-left, back-right

//•6: 6 channels: front-center, front-left, front-right, back-left, back-right, lfe-channel

//•7: 8 channels: front-center, front-left, front-right, side-left, side-right, back-left, back-right, lfe-

channel

//•8-15: reserved

6:關於本程式是將檔案中的box放到記憶體中做的處理,如果檔案過大會出現分配記憶體失敗的問題,所以應用到專案中時根據

需要分析所需要的box.

7:這裡暫時沒做多個mdat_box的判斷,乙個檔案中有可能有多個mdatbox,本程式未做判斷,未找到類似的檔案。這樣會產生

乙個問題就是檔案定位資料幀的時候定位會有問題。

9:本文參考了一些網路中文章,寫的都很好,分享給大家:

改進:

1:demux.cpp,548行的eles**替

else}

2:stsd_box.cpp, 189行更改為:

stsdvide_pos -= 5;

//stsdvide->depth =

// stsdvide_buf[stsdvide_pos]  << 8 |

// stsdvide_buf[stsdvide_pos +1];

//stsdvide_pos +=2;

//stsdvide->pre_defined_2 =

// stsdvide_buf[stsdvide_pos]  << 8 |

// stsdvide_buf[stsdvide_pos +1];

//stsdvide_pos +=2; 

MP4結構分析

一 mp4 mp4 mpeg 4 part14 是一種常見的多 容器格式,是在 iso iec 14496 14 標準檔案中定義的。mp4檔案的所有資料都裝在box quicktime中為atom 中,mp4檔案由若干個box組成,每個box有型別和長度,可以將box理解為乙個資料物件塊。box中可...

nginx支援MP4模組

nginx的安裝參考 安裝步驟 解壓。注釋掉解壓目錄下src ngx http streaming module.c檔案的158 161行的 如下圖。跳轉到nginx解壓目錄,配置安裝mp4模組支援。configure prefix server nginx add module nginx mod...

高畫質MP4晶元方案點評

09可謂高畫質數碼年,在華芯飛cc1600所推動的四核四匯流排架構勢頭正猛之際,隨著ti方案近日的強推讓09年的晶元之戰開始蔓延,此時凌陽v800 0晶元和adi卻沒有多大動靜而顯得更為遜色,而1月份君正發布4750晶元後卻一直再沒訊息傳出。今天,我們就來簡單談談近期幾大晶元的特點,並針對其功能特色...