青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

AAC 格式分析

轉(zhuǎn)載自:http://blog.chinaunix.net/uid-26084833-id-3416600.html

一SADTS格式:

       ADTS的全稱(chēng)是Audio Data Transport Stream。是AAC音頻的傳輸流格式。

       AAC音頻格式在MPEG-2ISO-13318-7 2003)中有定義。AAC后來(lái)又被采用到MPEG-4標(biāo)準(zhǔn)中。

       1. adts_sequence()

       {

              while (nextbits() == syncword)

              {

                     adts_frame();

              }

       }

 

       2. adts_frame()

       {

              adts_fixed_header();

              adts_variable_header();

              if (number_of_raw_data_blocks_in_frame == 0)

              {

                     adts_error_check();

                     raw_data_block();

              } else

              {

                     adts_header_error_check();

                     for (i = 0; i <= number_of_raw_data_blocks_in_frame; i++)

                     {

                             raw_data_block();

                             adts_raw_data_block_error_check();

                     }

              }

       }

 

       3. adts_fixed_header()

       {

              syncword: 12 bslbf

              ID: 1 bslbf

              layer: 2 uimsbf

              protection_absent: 1 bslbf

              profile: 2 uimsbf

              sampling_frequency_index: 4 uimsbf

              private_bit: 1 bslbf

              channel_configuration: 3 uimsbf

              original/copy: 1 bslbf

              home: 1 bslbf

       }

      

       adts_variable_header()

       {

              copyright_identification_bit: 1 bslbf

              copyright_identification_start: 1 bslbf

              frame_length: 13 bslbf

              adts_buffer_fullness: 11 bslbf

              number_of_raw_data_blocks_in_frame: 2 uimsfb

       }

 

       詳細(xì)說(shuō)明下ADTS頭的重要數(shù)據(jù)部分:

       syncword 同步字The bit string 1111 1111 1111,說(shuō)明一個(gè)ADTS幀的開(kāi)始。

       ID    MPEG 標(biāo)示符, 設(shè)置為1.

       layer Indicates which layer is used. Set to ‘00’

       protection_absent 表示是否誤碼校驗(yàn)

       profile 表示使用哪個(gè)級(jí)別的AAC,如01 Low Complexity(LC)--- AACLC

       sampling_frequency_index 表示使用的采樣率下標(biāo)

       sampling_frequency_index sampling frequeny [Hz]

       0x0       96000

       0x1           88200

       0x2          64000

       0x3          48000

       0x4          44100

       0x5          32000

       0x6            24000

       0x7          22050

       0x8          16000

       0x9          2000

       0xa          11025

       0xb          8000

       0xc          reserved

       0xd          reserved

       0xe          reserved

       0xf           reserved

       channel_configuration 表示聲道數(shù)

       frame_length 一個(gè)ADTS幀的長(zhǎng)度包括ADTS頭和raw data block.

       adts_buffer_fullness  0x7FF 說(shuō)明是碼率可變的碼流

       number_of_raw_data_blocks_in_frame

      表示ADTS幀中有number_of_raw_data_blocks_in_frame + 1個(gè)AAC原始幀.

       所以說(shuō)number_of_raw_data_blocks_in_frame == 0 表示說(shuō)ADTS幀中有一個(gè)AAC數(shù)據(jù)塊并不是說(shuō)沒(méi)有。(一個(gè)AAC原始幀包含一段時(shí)間內(nèi)1024個(gè)采樣及相關(guān)數(shù)據(jù))

二 封裝AAC為ADTS幀 

       一個(gè)AAC原始數(shù)據(jù)塊長(zhǎng)度是可變的,對(duì)原始幀加上ADTS頭進(jìn)行ADTS 的封裝,就形成了ADTS幀。通常我們將得到的AAC原始幀進(jìn)行封裝后寫(xiě)入文件,用常用的播放器如千千靜聽(tīng)即可播放,這是個(gè)驗(yàn)證AAC數(shù)據(jù)是否正確的方法。   

       進(jìn)行封裝前,需要了解相關(guān)參數(shù),如采樣率,聲道數(shù),原始數(shù)據(jù)塊的長(zhǎng)度等。下面把AAC原始數(shù)據(jù)幀加工為ADTS幀,據(jù)相關(guān)參數(shù)填寫(xiě)組成7字節(jié)的ADTS頭。

       The ADTS header is defined below -    

       unsigned int obj_type = 0;    

       unsigned int num_data_block = frame_length / 1024; 

       // include the header length also     

       frame_length += 7;   

       /* We want the same metadata */    

       /* Generate ADTS header */    

       if(adts_header == NULL) return;    

       /* Sync point over a full byte */    

       adts_header[0] = 0xFF;    

       /* Sync point continued over first 4 bits + static 4 bits    

      * (ID, layer, protection)*/    

       adts_header[1] = 0xF9;    

       /* Object type over first 2 bits */    

       adts_header[2] = obj_type << 6;//    

       /* rate index over next 4 bits */    

       adts_header[2] |= (rate_idx << 2);    

       /* channels over last 2 bits */    

       adts_header[2] |= (channels & 0x4) >> 2;   

       /* channels continued over next 2 bits + 4 bits at zero */    

       adts_header[3] = (channels & 0x3) << 6;    

       /* frame size over last 2 bits */    

       adts_header[3] |= (frame_length & 0x1800) >> 11;    

       /* frame size continued over full byte */    

       adts_header[4] = (frame_length & 0x1FF8) >> 3;    

       /* frame size continued first 3 bits */    

       adts_header[5] = (frame_length & 0x7) << 5;    

       /* buffer fullness (0x7FF for VBR) over 5 last bits*/    

       adts_header[5] |= 0x1F;    

       /* buffer fullness (0x7FF for VBR) continued over 6 first bits + 2 zeros     

       * number of raw data blocks */

       adts_header[6] = 0xFC;// one raw data blocks .

       adts_header[6] |= num_data_block & 0x03; //Set raw Data blocks.

 

       CMMB中,采用AAC音頻壓縮標(biāo)準(zhǔn),默認(rèn)狀況下,編碼參數(shù)如下:雙聲道,采樣率24KHZ,幀長(zhǎng)變長(zhǎng),碼流可變碼率的碼流,一般采用的AAC profile

AAC-LC。將從CMMB復(fù)用幀解析的一個(gè)AAC原始幀封裝為ADTS幀的方法如下:

uint8 aac_buf[ADTS_FRAME_SIZE]={0x0ff,0x0f9,0x058,0x80,0,0x1f,0xfc};

       從上述7個(gè)字節(jié)分析音頻參數(shù)如下:

       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 碼率可變的碼流 

       現(xiàn)插入長(zhǎng)度參數(shù) 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.

              emcpy(&aac_buf[7],data,wDataLen);

              //形成一個(gè)ADTS幀寫(xiě)入文件。

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

       }

三 LATM格

       LATM 的全稱(chēng)為Low-overhead MPEG-4 Audio TransportMultiplex(低開(kāi)銷(xiāo)音頻傳輸復(fù)用),是MPEG-4 AAC制定的一種高效率的碼流傳輸方式,MPEG-2 TS 流也采用LATM 作為AAC 音頻碼流的封裝格式之 LATM格式也以幀為單位,主要由AudioSpecificConfig(音頻特定配置單元)與音頻負(fù)載組成。

AudioSpecificConfig 描述了一個(gè)LATM 幀的信息,音頻負(fù)載主要由PayloadLengthInfo(負(fù)載長(zhǎng)度信息)和PayloadMux(負(fù)載凈荷)組成。

       AudioSpecificConfig 信息可以是帶內(nèi)傳,也可以是帶外傳。所謂帶內(nèi)傳,就是指每一個(gè)LATM 幀,都含有一個(gè)AudioSpecificConfig 信息;而帶外傳,

則每一個(gè)LATM幀都不含有AudioSpecificConfig 信息,而通過(guò)其他方式把AudioSpecificConfig信息發(fā)送到解碼端,由于AudioSpecificConfig 信息一般是不變的,所以只需發(fā)送一次即可。由此可見(jiàn),AudioSpecificConfig 信息采用帶內(nèi)傳輸可適應(yīng)音頻編碼信息不斷變化的情況,而采用帶外傳輸,可以節(jié)省音頻傳輸碼率。帶內(nèi)或帶外傳,由muxconfigPresent 標(biāo)志位決定。例如流媒體應(yīng)用中,muxconfigPresent 可設(shè)置為0,這樣LATM幀中將不含有AudioSpecificConfig信息,LATM幀通過(guò)RTP包發(fā)送出去,AudioSpecificConfig 可通過(guò)SDP文件一次性傳送到解碼端。

       AudioSpecificConfig 主要參數(shù)

       numSubFrames  子幀的數(shù)目

       numProgram    復(fù)用的節(jié)目數(shù)

       numLayer      復(fù)用的層數(shù)

       frameLengthType  負(fù)載的幀長(zhǎng)度類(lèi)型,包括固定長(zhǎng)度與可變長(zhǎng)度

       audioObjectType   音頻對(duì)象類(lèi)型

       samplingFrequency   采樣率

       channelConfiguration   聲道配置

       音頻負(fù)載由若干子幀組成,每個(gè)子幀由PayloadLengthInfoPayloadMux組成,與ADTS幀凈荷一樣,音頻負(fù)載主要包含原始幀數(shù)據(jù)。 

       AAC打包成TS流通常有兩種方式,分別是先打包成ADTSLATMADTS的每一幀都有個(gè)幀頭,在每個(gè)幀頭信息都一樣的狀況下,會(huì)有很大的冗余。LATM格式具有很大的靈活性,每幀的音頻配置單元既可以帶內(nèi)傳輸,有可以帶外傳輸。正因?yàn)槿绱耍?/span>LATM不僅適用于流傳輸還可以用于RTP傳輸,RTP傳輸時(shí),若音頻數(shù)據(jù)配置信息是保持不變,可以先通過(guò)SDP會(huì)話先傳輸StreamMuxConfigAudioSpecificConfig)信息,由于LATM流由一個(gè)包含了一個(gè)或多個(gè)音頻幀的audioMuxElements序列組成。一個(gè)完整或部分完整的audioMuxElement可直接映射到一個(gè)RTP負(fù)載上。 

       下面是一個(gè)audoMuxEmlemt

       AudioMuxElement(muxConfigPresent)

       { 

              if (muxConfigPresent)  

              { 

                     useSameStreamMux;    

                     if (!useSameStreamMux)       

                            StreamMuxConfig();

             }

 

              if (audioMuxVersionA == 0) 

              { 

                     for (i = 0; i <= numSubFrames; i++)    

                     {

                             PayloadLengthInfo();       

                            PayloadMux();   

                    }.  

              }

       }

  

       可以很簡(jiǎn)單的把ADTS幀轉(zhuǎn)換為LATM幀,根據(jù)ADTS頭的信息,生成StreamMuxConfig,將ADTS中的原始幀提取出來(lái),前面加上PayloadLengthInfo做為LATM的音頻幀。按照上述格式打包生成AudioMuxElement,作為RTP的負(fù)載傳輸.

 

四、 CMMB中的LATM 

 

       當(dāng)CMMB中音頻壓縮標(biāo)準(zhǔn)為AAC時(shí),默認(rèn)采用LATM封裝。StreamMuxConfig采用帶外傳輸。StreamMuxConifg中的若干默認(rèn)參數(shù)如下:

       audioMuxVersion:0標(biāo)志流語(yǔ)法版本號(hào)為0

       allStreamSameTiemFraming1,標(biāo)志復(fù)用到PayLoadMux()中的所有負(fù)載共享一個(gè)共同的時(shí)基

       umSubFrames:0  表示只有一個(gè)音頻子幀. 

       audioObjectType:2 AAC-LC freameLengthType:0 幀長(zhǎng)度是可變的

       latmBufferFullness:0xFF 碼率可變的碼流

 

參考:

[1]ISO/IEC 13818-7(2003 MPEG-2 AAC, Second Edition)

[2] ISO13818-72006 Fourth edition AAC

[3] RFC 3016 (rfc3016) - RTP Payload Format for MPEG-4 Audio-Visual Streams

[4] AAC音頻壓縮編碼標(biāo)準(zhǔn)的ADTSLATM格式分析

[5] GYZ 234-2008 CMMB復(fù)用實(shí)施指南




posted on 2013-02-05 13:49 楊粼波 閱讀(3289) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线视频二区| 久久激情视频| 国产精品亚洲综合| 国产精品h在线观看| 欧美日韩精品在线视频| 欧美日本一区| 欧美日韩午夜视频在线观看| 欧美日韩国产在线| 欧美性猛交一区二区三区精品| 欧美日韩一区二区三区免费| 国产精品成人免费视频| 国产乱子伦一区二区三区国色天香| 国产精品影片在线观看| 激情另类综合| 999在线观看精品免费不卡网站| 亚洲一区二区三区激情| 亚洲欧美在线观看| 美女被久久久| 亚洲伦理网站| 久久精品女人的天堂av| 欧美日韩一级片在线观看| 国产在线观看91精品一区| 亚洲精品美女在线观看播放| 亚洲免费中文| 久久久久久婷| 夜夜爽av福利精品导航 | 亚洲欧美视频一区| 久久一区欧美| 日韩视频在线观看| 久久久免费av| 精品成人久久| 亚洲一区在线观看免费观看电影高清| 欧美肥婆在线| 国产九九精品视频| 亚洲黄网站黄| 欧美制服第一页| 亚洲黄色一区| 欧美一区在线直播| 欧美视频在线一区| 亚洲三级视频| 老鸭窝91久久精品色噜噜导演| 亚洲人精品午夜| 麻豆精品精华液| 国产视频久久网| 亚洲欧美精品伊人久久| 91久久在线播放| 久久夜色精品国产亚洲aⅴ| 国产精品系列在线| 亚洲性视频网址| 亚洲日本欧美日韩高观看| 久久青草久久| 韩日精品视频一区| 久久精品中文字幕一区二区三区 | 日韩视频一区二区在线观看 | 久久久综合视频| 性色av一区二区三区在线观看| 国产精品第一页第二页第三页| 一区二区黄色| 最近看过的日韩成人| 欧美福利电影在线观看| 亚洲国产精品久久91精品| 美女图片一区二区| 久久久久久一区二区| 在线免费观看日韩欧美| 免费在线观看日韩欧美| 久久精品国产在热久久| 国自产拍偷拍福利精品免费一| 久久九九久精品国产免费直播| 亚洲男女自偷自拍| 国产婷婷色一区二区三区四区| 久久精品在线播放| 久久香蕉国产线看观看av| 亚洲第一色在线| 亚洲国产成人porn| 欧美涩涩视频| 欧美一区二区高清| 一本高清dvd不卡在线观看| 亚洲私人黄色宅男| 亚洲天堂视频在线观看| 国产欧美短视频| 久久婷婷综合激情| 欧美成人一区二区| 亚洲小说春色综合另类电影| 亚洲一区二区网站| 在线日韩成人| 亚洲精品一区二区三区在线观看| 欧美日韩美女一区二区| 午夜精品久久久久久久99樱桃| 午夜视频久久久久久| 在线不卡中文字幕播放| 亚洲精品久久久蜜桃| 国产精品综合色区在线观看| 麻豆av一区二区三区久久| 欧美激情一区二区三区| 亚洲欧美久久| 美女黄毛**国产精品啪啪| 亚洲一本视频| 久久蜜臀精品av| 亚洲午夜黄色| 久久精品三级| 亚洲小说春色综合另类电影| 欧美一区深夜视频| 在线视频欧美精品| 久久久蜜臀国产一区二区| 亚洲一区欧美| 免费观看国产成人| 久久国产主播精品| 欧美日韩情趣电影| 欧美va亚洲va国产综合| 国产精品国产三级国产专播品爱网 | 欧美三区美女| 欧美成人中文字幕| 国产麻豆精品视频| 日韩亚洲欧美中文三级| 激情综合久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲观看高清完整版在线观看| 亚洲视频免费看| 亚洲精品视频二区| 久久国产精品一区二区三区四区| 亚洲在线一区二区三区| 欧美精品一区二区三区在线播放 | 欧美午夜精品久久久久免费视| 嫩草国产精品入口| 国产永久精品大片wwwapp| 夜夜嗨av一区二区三区四季av| 亚洲欧洲日韩在线| 免费黄网站欧美| 免费日韩一区二区| 激情亚洲成人| 欧美中文在线观看国产| 久久国产精品99国产精| 亚洲国产成人一区| 欧美午夜久久| 欧美国产高清| 在线播放精品| 久久精品一区二区三区不卡| 欧美在线观看你懂的| 国产精品网曝门| 亚洲在线视频网站| 欧美一区三区三区高中清蜜桃| 国产精品久久久久久av下载红粉| 亚洲裸体视频| 亚洲一区日韩在线| 国产精品久久国产精品99gif| av成人福利| 亚洲欧美日韩视频一区| 国产精品女人久久久久久| 亚洲一区二区日本| 久久国产精品72免费观看| 韩国成人精品a∨在线观看| 久久久精品五月天| 亚洲大胆av| 亚洲天天影视| 国产精品日韩在线播放| 午夜视频一区二区| 久久综合伊人77777蜜臀| 亚洲国产成人精品视频| 欧美精品www在线观看| 一区二区三区四区五区精品视频| 亚洲欧美www| 国产一区二区三区在线免费观看| 久久米奇亚洲| 一本色道久久综合| 另类激情亚洲| 亚洲色图自拍| 国内精品久久久久影院色| 牛牛国产精品| 亚洲午夜精品久久久久久app| 久久久精品2019中文字幕神马| 影音先锋亚洲精品| 欧美午夜精品一区| 美脚丝袜一区二区三区在线观看 | 欧美成人国产| 亚洲一级黄色片| 黄网动漫久久久| 欧美精品在线观看播放| 小嫩嫩精品导航| 欧美激情一二三区| 欧美一区综合| 一本大道久久a久久精二百| 国产亚洲视频在线观看| 欧美日韩成人在线观看| 久久精品一区二区国产| 亚洲视频一区二区| 欧美成人精品激情在线观看| 亚洲午夜精品国产| 亚洲国产99| 国产网站欧美日韩免费精品在线观看| 欧美ab在线视频| 欧美在线影院在线视频| 一本色道久久88综合亚洲精品ⅰ | 一区二区免费在线观看| 国产在线精品成人一区二区三区 | 亚洲激情视频| 欧美在线观看视频一区二区| 日韩网站在线观看| 激情综合网址| 国产日韩1区| 欧美午夜宅男影院|