AAC ADTS LATM 格式分析

2021-05-26 12:53:02 字數 3671 閱讀 3899

aac adts latm 格式分析

一、adts格式

adts的全稱是audio data transport stream。是aac音訊的傳輸流格式。

aac音訊格式在mpeg-2(iso-13318-7 2003)中有定義。aac後來又被採用到mpeg-4標準中。

1.   adts_sequence()

2. adts_frame()

else }3.

adts_fixed_header()

;從上述7個位元組分析音訊引數如下:

synword--0xfff

id:0x1--- 1--- mpeg2 identifier,

layer--00

protection_absent ---01

profile--01   1 low complexity profile (lc) aac-lc

smaping_freuency_index---0110-->0x06--->取樣率24khz

channel_configuration --- aac_buf[3] = 0x08---->2---->雙聲道。。

adts_buffer_fullness--->0x7ff 位元速率可變的碼流

現插入長度引數 wdatalen;

void onaudioaacframe(byte* data, uint16 wdatalen)

unsigned int num_data_block = wdatalen / 1024;

uint16 frame_length;

frame_length = wdatalen + 7;

/* frame size over last 2 bits */

aac_buf[3] |= (frame_length & 0x1800) >> 11;// the upper 2 bit

/* frame size continued over full byte */

aac_buf[4] = (frame_length & 0x1ff8) >> 3;// the middle 8 bit

/* frame size continued first 3 bits */

aac_buf[5] |= (frame_length & 0x7) << 5;//the last 3 bit

aac_bug[6] |= num_data_block & 0x03; //set raw data blocks.

memcpy(&aac_buf[7],data,wdatalen);

//形成乙個adts幀寫入檔案。

fwrite(aac_buf,wdatalen+7,sizeof(byte),f_audio);

三.latm格式

latm 的全稱為「low-overhead mpeg-4 audio transportmultiplex」(低開銷音訊傳輸復用),是mpeg-4 aac制定的一種高效率的碼流傳輸方式,mpeg-2 ts 流也採用latm 作為aac 音訊碼流的封裝格式之     latm格式也以幀為單位,主要由audiospecificconfig(音訊特定配置單元)與音訊負載組成。audiospecificconfig描述了乙個latm 幀的資訊,音訊負載主要由payloadlengthinfo(負載長度資訊)和payloadmux(負載淨荷)組成。

audiospecificconfig 資訊可以是帶內傳,也可以是帶外傳。所謂帶內傳,就是指每乙個latm 幀,都含有乙個audiospecificconfig 資訊;而帶外傳,則每乙個latm幀都不含有audiospecificconfig 資訊,而通過其他方式把audiospecificconfig資訊傳送到解碼端,由於audiospecificconfig 資訊一般是不變的,所以只需傳送一次即可。由此可見,audiospecificconfig 資訊採用帶內傳輸可適應音訊編碼資訊不斷變化的情況,而採用帶外傳輸,可以節省音訊傳輸碼率。帶內或帶外傳,由muxconfigpresent 標誌位決定。例如流**應用中,muxconfigpresent 可設定為0,這樣latm幀中將不含有audiospecificconfig 資訊,latm幀通過rtp包傳送出去,audiospecificconfig 可通過sdp檔案一次性傳送到解碼端。

audiospecificconfig 主要引數

numsubframes  子幀的數目

numprogram    復用的節目數

numlayer      復用的層數

framelengthtype  負載的幀長度型別,包括固定長度與可變長度

audioobjecttype   音訊物件型別

samplingfrequency   取樣率

channelconfiguration   聲道配置

音訊負載由若干子幀組成,每個子幀由payloadlengthinfo和payloadmux組成,與adts幀淨荷一樣,音訊負載主要包含原始幀資料。

aac打包成ts流通常有兩種方式,分別是先打包成adts或latm。adts的每一幀都有個幀頭,在每個幀頭資訊都一樣的狀況下,會有很大的冗餘。latm格式具有很大的靈活性,每幀的音訊配置單元既可以帶內傳輸,有可以帶外傳輸。正因為如此,latm不僅適用於流傳輸還可以用於rtp傳輸,rtp傳輸時,若音訊資料配置資訊是保持不變,可以先通過sdp會話先傳輸streammuxconfig(audiospecificconfig)資訊,由於latm流由乙個包含了乙個或多個音訊幀的audiomuxelements序列組成。乙個完整或部分完整的audiomuxelement可直接對映到乙個rtp負載上。

下面是乙個audomuxemlemt

audiomuxelement(muxconfigpresent)

if (audiomuxversiona == 0).}

}可以很簡單的把adts幀轉換為latm幀,根據adts頭的資訊,生成streammuxconfig,將adts中的原始幀提取出來,前面加上payloadlengthinfo做為latm的音訊幀。按照上述格式打包生成audiomuxelement,作為rtp的負載傳輸.

四、cmmb中的latm

當cmmb中音訊壓縮標準為aac時,預設採用latm封裝。streammuxconfig採用帶外傳輸。streammuxconifg中的若干預設引數如下:

audiomuxversion:0標誌流語法版本號為0

allstreamsametiemframing:1,標誌復用到payloadmux()中的所有負載共享乙個共同的時基

numsubframes:0  表示只有乙個音訊子幀.

audioobjecttype:2 aac-lc

freamelengthtype:0 幀長度是可變的

latmbufferfullness:0xff 位元速率可變的碼流

參考:[1]iso/iec 13818-7(2003 mpeg-2 aac, second edition)

[2] iso13818-7(2006 fourth edition aac)

[3] rfc 3016 (rfc3016) - rtp payload format for mpeg-4 audio-visual streams

[4] aac音訊壓縮編碼標準的adts與latm格式分析

[5] gyz 234-2008: cmmb復用實施指南

AAC ADTS LATM 格式分析

aac adts latm 格式分析 一 adts格式 adts的全稱是audio data transport stream。是aac音訊的傳輸流格式。aac音訊格式在mpeg 2 iso 13318 7 2003 中有定義。aac後來又被採用到mpeg 4標準中。1.adts sequence ...

AAC ADTS格式分析

adts全稱是 audio data transport stream 是aac的一種十分常見的傳輸格式。adts aac adts header aac es adts header aac es adts header aac es adts 頭中相對有用的資訊取樣率 聲道數 幀長度。想想也是,...

AAC ADTS格式分析

1.adts是個啥 adts全稱是 audio data transport stream 是aac的一種十分常見的傳輸格式。adts aac adts header aac es adts header aac es adts header aac es adts 頭中相對有用的資訊取樣率 聲道數...