国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)

這篇具有很好參考價值的文章主要介紹了音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

AAC介紹

AAC(Advanced Audio Coding)是一種現(xiàn)代的音頻編碼技術(shù),用于數(shù)字音頻的傳輸和存儲領(lǐng)域。AAC是MPEG-2和MPEG-4標(biāo)準(zhǔn)中的一部分,可提供更高質(zhì)量的音頻數(shù)據(jù),并且相比于MP3等舊有音頻格式,AAC需要更少的比特率。

AAC通過使用一些高級的音頻編碼算法來實現(xiàn)更好的聲音質(zhì)量和更低的壓縮比。其中最重要的算法是信號掩蔽技術(shù)、短時頻譜分析和Psychoacoustic模型。這些算法使得AAC能夠在較低的比特率下保持更好的音質(zhì),并且減少了由于壓縮而引入的失真和噪音。

AAC支持多種采樣率、聲道數(shù)和比特率,以滿足不同應(yīng)用場景的需求。它可以實現(xiàn)從8 kbps到320 kbps的不同比特率的音頻壓縮,同時實現(xiàn)CD音質(zhì)甚至更高的音樂體驗。

AAC還具有很好的靈活性和可擴(kuò)展性,包括高級音頻編碼(High Efficiency AAC,HE-AAC)、帶有SBR的HE-AAC v2和LC-AAC(Low Complexity AAC)等變體。此外,AAC還支持與其他多媒體技術(shù)(如H.264或MPEG-4)集成使用,并且支持多種容器格式(如MP4、3GP、M4A和ADTS等)。

總之,AAC是一種現(xiàn)代的音頻編碼技術(shù),具有高質(zhì)量的音頻數(shù)據(jù)、較低的比特率、靈活性和可擴(kuò)展性等優(yōu)點。由于其廣泛應(yīng)用于數(shù)字音頻傳輸和存儲領(lǐng)域,它已經(jīng)成為音頻壓縮領(lǐng)域的標(biāo)準(zhǔn)之一。

AAC ADTS介紹

AAC(Advanced Audio Coding)是一種現(xiàn)代的音頻編碼技術(shù),被廣泛應(yīng)用于數(shù)字音頻傳輸和存儲領(lǐng)域。AAC可以提供更高質(zhì)量的音頻數(shù)據(jù),同時相比MP3等舊有音頻格式,AAC需要更少的比特率。

ADTS(Audio Data Transport Stream)是AAC音頻流的容器格式,它是一種通過網(wǎng)絡(luò)傳輸音頻流的標(biāo)準(zhǔn)格式之一。ADTS文件包含了AAC音頻流中的各個元素,并且在音頻數(shù)據(jù)中添加了額外的信息,如同步標(biāo)記、采樣率、通道數(shù)等。

ADTS文件由多個部分組成,其中最重要的是頭部信息。頭部信息通常占據(jù)了整個文件中的前7到9個字節(jié),其中包括了一個固定的同步標(biāo)記(syncword),該標(biāo)記用于確定音頻幀的邊界位置。進(jìn)一步的,頭部還包含了一些AAC音頻流的基礎(chǔ)信息,如聲道數(shù)、采樣率、比特率和編碼配置等。

在ADTS文件中,每個AAC音頻幀都以一個長度為7或9個字節(jié)的ADTS幀頭開始,其中包含了同步標(biāo)記、幀大小、采樣率、聲道數(shù)和其他元數(shù)據(jù)。接下來是AAC編碼的原始音頻數(shù)據(jù),這些數(shù)據(jù)會被添加到ADTS幀中,以形成完整的音頻幀。

總之,ADTS是AAC音頻流的容器格式,提供了一種便捷的方式來傳輸和存儲AAC音頻流。通過ADTS,可以輕松地對AAC音頻進(jìn)行封裝和解封,以滿足各種應(yīng)用場景的需求。

AAC ADTS Header介紹

AAC ADTS(Audio Data Transport Stream)文件是AAC音頻流的一種容器格式,其中最重要的部分之一就是ADTS頭部信息。ADTS頭部信息占據(jù)了整個文件中的前7或9個字節(jié),其中包括了一個固定的同步標(biāo)記(syncword),該標(biāo)記用于確定音頻幀的邊界位置。以下是對ADTS頭部信息中各個字段的詳細(xì)介紹:

  1. 同步字(syncword):2個字節(jié)(16位)
    同步字是ADTS文件的標(biāo)志符,它用于確定音頻幀的開始位置和結(jié)束位置,通常為0xFFF。

  2. ID (MPEG Version):1個字節(jié)(8位)
    ID指示使用的MPEG版本。值為0表示MPEG-4,值為1表示MPEG-2。

  3. Layer:2個比特
    Layer定義了音頻流所屬的層級,對于AAC來說,其值為0。

  4. Protection Absent:1個比特
    Protection Absent指示是否啟用CRC錯誤校驗。當(dāng)該比特為0時,表明音頻數(shù)據(jù)經(jīng)過CRC校驗,否則未經(jīng)過CRC校驗。

  5. Profile:2個比特
    Profile指示編碼所使用的AAC規(guī)范類型,如AAC LC、AAC HE-AAC等。

  6. Sampling Frequency Index (Sampling Rate):4個比特
    Sampling Frequency Index表示采樣率的索引,它告訴解碼器當(dāng)前音頻數(shù)據(jù)的采樣率。這個值的范圍是0到15,每個值表示一個特定的采樣率。

  7. Private Bit:1個比特
    Private Bit為私有比特,通常被設(shè)置為0,沒有實際作用。

  8. Channel Configuration:3個比特
    Channel Configuration指示音頻的通道數(shù),如單聲道、立體聲或多聲道等。

  9. Originality:1個比特
    Originality指示編碼數(shù)據(jù)是否被原始產(chǎn)生,通常為0。

  10. Home:1個比特
    Home bit通常被設(shè)置為0,沒有實際作用。

  11. Emphasis:2個比特
    Emphasis指示對信號進(jìn)行強(qiáng)調(diào)處理的類型,一般不使用。

除了上述字段之外,ADTS頭部還包括文件長度和幀長度等信息。其中,文件長度指整個AAC ADTS文件的長度,而幀長度則指當(dāng)前ADTS幀所占的字節(jié)數(shù)。這些信息可以通過解析ADTS頭部來確定音頻幀的邊界,從而提取出原始的AAC音頻數(shù)據(jù)。

總之,AAC ADTS頭部信息包括同步字、ID、Layer、Protection Absent、Profile、Sampling Frequency Index、Private Bit、Channel Configuration、Originality、Home、Emphasis等各個字段,通過這些字段可以讀取AAC音頻流中的基礎(chǔ)信息,并確定音頻幀的邊界位置。

AAC ES介紹

AAC ES(AAC Elementary Stream)是AAC音頻編碼的一種基本數(shù)據(jù)格式,也是AAC音頻數(shù)據(jù)在流式傳輸和文件存儲中的常見格式之一。

AAC ES不同于其他容器格式(如MP4、M4A等),它不包含額外的元數(shù)據(jù)或結(jié)構(gòu)信息,僅包含未經(jīng)任何封裝或壓縮處理的原始音頻數(shù)據(jù)。這些原始數(shù)據(jù)可以作為音頻文件或流傳輸?shù)幕A(chǔ),同時也可以用于對AAC音頻進(jìn)行轉(zhuǎn)碼、編輯或重組。

AAC ES 通常由一系列連續(xù)的AAC音頻幀組成,每個幀以一個特定的標(biāo)志符開始,該標(biāo)志符表示這是一個AAC音頻幀。在AAC ES中,每個音頻幀擁有相同的長度,但是并不一定包含相同數(shù)量的采樣點,因為采樣率和聲道數(shù)量可能會發(fā)生變化。

AAC ES 的另一個關(guān)鍵特征是其比特流順序,即數(shù)字音頻數(shù)據(jù)的組織方式。AAC ES 采用大端字節(jié)順序,其中高位字節(jié)排在前面,低位字節(jié)排在后面。此外,在AAC ES中,音頻數(shù)據(jù)按照從左到右、自上而下的順序排列,與典型的文本文件不同。

總之,AAC ES 是AAC音頻編碼的一種基本數(shù)據(jù)格式,它通常由一系列AAC音頻幀組成,并且不包含任何附加的元數(shù)據(jù)或結(jié)構(gòu)信息。AAC ES 可以作為音頻文件或流傳輸?shù)幕A(chǔ),同時也可以用于對AAC音頻進(jìn)行轉(zhuǎn)碼、編輯或重組。由于其簡單性和靈活性,AAC ES 受到了廣泛的應(yīng)用,并且成為了數(shù)字音頻編碼領(lǐng)域的標(biāo)準(zhǔn)之一。

AAC ADTS格式分析

AAC?頻格式:Advanced Audio Coding(?級?頻解碼),是?種由MPEG-4標(biāo)準(zhǔn)定義的有損?頻壓縮格式,由Fraunhofer發(fā)展,Dolby, Sony和AT&T是主要的貢獻(xiàn)者。

ADIF:Audio Data Interchange Format ?頻數(shù)據(jù)交換格式。這種格式的特征是可以確定的找到這個?頻數(shù)據(jù)的開始,不需進(jìn)?在?頻數(shù)據(jù)流中間開始的解碼,即它的解碼必須在明確定義的開始處進(jìn)?。故這種格式常?在磁盤?件中。

ADTS的全稱是Audio Data Transport Stream。是AAC?頻的傳輸流格式。AAC?頻格式在MPEG-2(ISO-13318-7 2003)中有定義。AAC后來?被采?到MPEG-4標(biāo)準(zhǔn)中。這種格式的特征是它是?個有同步字的?特流,解碼可以在這個流中任何位置開始。它的特征類似于mp3數(shù)據(jù)流格式。

簡單說,ADTS可以在任意幀解碼,也就是說它每?幀都有頭信息。ADIF只有?個統(tǒng)?的頭,所以必須得到所有的數(shù)據(jù)后解碼。

且這兩種的header的格式也是不同的,?前?般編碼后的和抽取出的都是ADTS格式的?頻流。兩者具體的組織結(jié)構(gòu)如下所示:

AAC的ADIF格式?下圖:
音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
AAC的ADTS的?般格式?下圖:
音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
空?處表示前后幀

有的時候當(dāng)你編碼AAC裸流的時候,會遇到寫出來的AAC?件并不能在PC和?機(jī)上播放,很?的可能就是AAC?件的每?幀?缺少了ADTS頭信息?件的包裝拼接。

只需要加?頭?件ADTS即可。?個AAC原始數(shù)據(jù)塊?度是可變的,對原始幀加上ADTS頭進(jìn)?ADTS的封裝,就形成了ADTS幀。

AAC?頻?件的每?幀由ADTS Header和AAC Audio Data組成。結(jié)構(gòu)體如下:

音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
每?幀的ADTS的頭?件都包含了?頻的采樣率,聲道,幀?度等信息,這樣解碼器才能解析讀取。

?般情況下ADTS的頭信息都是7個字節(jié),分為2部分:

adts_fixed_header();
adts_variable_header();

其?為固定頭信息,緊接著是可變頭信息。固定頭信息中的數(shù)據(jù)每?幀都相同,?可變頭信息則在幀與幀之間可變。

音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
syncword :同步頭 總是0xFFF, all bits must be 1,代表著?個ADTS幀的開始

ID:MPEG標(biāo)識符,0標(biāo)識MPEG-4,1標(biāo)識MPEG-2

Layer:always: ‘00’

protection_absent:表示是否誤碼校驗。Warning, set to 1 if there is no CRC and 0 if there is CRC

profile:表示使?哪個級別的AAC,如01 Low Complexity(LC)— AAC LC。有些芯?只?持AAC LC 。

在MPEG-2 AAC中定義了3種:
音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
profile的值等于 Audio Object Type的值減1

profile = MPEG-4 Audio Object Type - 1

音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
sampling_frequency_index:表示使?的采樣率下標(biāo),通過這個下標(biāo)在Sampling Frequencies[ ]數(shù)組中查找得知采樣率的值。

音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
channel_configuration: 表示聲道數(shù),?如2表示?體聲雙聲道

音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
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

接下來看下adts_variable_header();

音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
frame_length : ?個ADTS幀的?度包括ADTS頭和AAC原始流.
frame length, this value must include 7 or 9 bytes of header length:
aac_frame_length = (protection_absent = = 1 ? 7 : 9) + size(AACFrame)
protection_absent=0時, header length=9bytes
protection_absent=1時, header length=7bytes
adts_buffer_fullness:0x7FF 說明是碼率可變的碼流。
number_of_raw_data_blocks_in_frame:表示ADTS幀中有number_of_raw_data_blocks_in_frame + 1個AAC原始幀。
所以說number_of_raw_data_blocks_in_frame == 0 表示說ADTS幀中有?個AAC數(shù)據(jù)塊。

下?是ADTS的AAC?件部分:
?字節(jié)開始
音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)
第?幀的幀頭7個字節(jié)為:0xFF 0xF1 0x4C 0x40 0x20 0xFF 0xFC
分析各個關(guān)鍵數(shù)值:
111111111111
0
00
1
01
0011
0
001
0
0
0
0
0000100000111(幀?度)
11111111111
00
計算幀?度:將?進(jìn)制 0000100000111 轉(zhuǎn)換成?進(jìn)制為263。觀察第?幀的?
度確實為263個字節(jié)。
計算?法:(幀?度為13位,使?unsigned int來存儲幀?數(shù)值)

unsigned int getFrameLength(unsigned char* str)
{
    if ( !str )
    {
        return 0;
    }
    unsigned int len = 0;
    int f_bit = str[3];
    int m_bit = str[4];
    int b_bit = str[5];
    len += (b_bit>>5);
    len += (m_bit<<3);
    len += ((f_bit&3)<<11);
    return len;
}

總結(jié):AAC sequence三層

第一層:AAC sequence:多個AAC Frame。

第二層:AAC Frame:AAC header+AAC ES。

第三層:AAC ES。音頻數(shù)據(jù),不包含header;flv,mp4的音頻數(shù)據(jù)來自這一層,也就是說不包含header。

注意:第2層的AAC Frame,一般下只有1個AAC ES,但也有可能有兩個AAC ES。這取決于number_of_raw_data_blocks_in_frame的值,如果是0,代表1個AAC ES;如果死1,代表代表2個AAC ES。文章來源地址http://www.zghlxwxcb.cn/news/detail-457972.html

到了這里,關(guān)于音視頻八股文(7)-- 音頻aac adts三層結(jié)構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 音視頻八股文(2)--ffmpeg常見命令(1)

    音視頻八股文(2)--ffmpeg常見命令(1)

    官方文檔: https://www.ffmpeg.org/ffplay-all.html https://www.ffmpeg.org/ffmpeg-all.html 要在Windows系統(tǒng)上使用FFmpeg命令行,可以按照以下步驟搭建環(huán)境: 1.訪問FFmpeg官方網(wǎng)站,下載已經(jīng)編譯好的Windows shared庫。 2.將下載得到的包中的執(zhí)行文件ffmpeg.exe、ffplay.exe和ffprobe.exe拷貝到C:Windows目錄下。

    2024年02月16日
    瀏覽(25)
  • 音視頻八股文(6)-- ffmpeg大體介紹和內(nèi)存模型

    音視頻八股文(6)-- ffmpeg大體介紹和內(nèi)存模型

    ? 容器/文件(Conainer/File):即特定格式的多媒體文件, 比如mp4、flv、mkv等。 ? 媒體流(Stream):表示時間軸上的一段連續(xù)數(shù)據(jù),如一 段聲音數(shù)據(jù)、一段視頻數(shù)據(jù)或一段字幕數(shù)據(jù),可以是壓縮 的,也可以是非壓縮的,壓縮的數(shù)據(jù)需要關(guān)聯(lián)特定的編解 碼器(有些碼流音頻

    2023年04月27日
    瀏覽(23)
  • 什么叫面試八股文,一篇文章帶你入門音視頻(1),使用指南

    什么叫面試八股文,一篇文章帶你入門音視頻(1),使用指南

    版稅方式:按個收取 備注:WMA的全稱是Windows Media Audio,它是微軟公司推出的與MP3格式齊名的一種新的音頻格式。由于WMA在壓縮比和音質(zhì)方面都超過了MP3,更是遠(yuǎn)勝于RA(Real Audio),即使在較低的采樣頻率下也能產(chǎn)生較好的音質(zhì),再加上WMA有微軟的Windows Media Player做其強(qiáng)大的后盾

    2024年04月25日
    瀏覽(97)
  • 音視頻編碼格式-AAC ADT

    音視頻編碼格式-AAC ADT

    例子:config = 1408 1408(16進(jìn)制) :? 0001?0100 0000 1000 audioObjectType (5bit) 為 00010?, 即 2, profie = (audioObjectType -1 ) AAC LC samplingFrequencyIndex ? (4bit)? 為 1000?, 即 8?, 對應(yīng)的采樣頻率為 16000 channelConfiguration? (4bit) ? 為 0001 , 表示channel數(shù)量為1 ?

    2024年02月09日
    瀏覽(18)
  • 音視頻八股文(11)-- ffmpeg avio 內(nèi)存輸入和內(nèi)存輸出。內(nèi)存輸出有完整代碼,網(wǎng)上很少有的。

    音視頻八股文(11)-- ffmpeg avio 內(nèi)存輸入和內(nèi)存輸出。內(nèi)存輸出有完整代碼,網(wǎng)上很少有的。

    avio是FFmpeg中的一個模塊,用于實現(xiàn)多種輸入輸出方式的封裝。 avio提供了一系列API,可以將數(shù)據(jù)從內(nèi)存讀取到緩沖區(qū)中,也可以將緩沖區(qū)中的數(shù)據(jù)寫入到內(nèi)存中。其實現(xiàn)依賴于IOContext結(jié)構(gòu)體,該結(jié)構(gòu)體定義了當(dāng)前輸入/輸出事件的狀態(tài)、數(shù)據(jù)、回調(diào)函數(shù)等信息,并支持通過自定

    2024年02月03日
    瀏覽(29)
  • 【音視頻 | AAC】AAC格式音頻文件解析

    【音視頻 | AAC】AAC格式音頻文件解析

    ??博客主頁??:??https://blog.csdn.net/wkd_007?? ??博客內(nèi)容??:??嵌入式開發(fā)、Linux、C語言、C++、數(shù)據(jù)結(jié)構(gòu)、音視頻?? ??本文內(nèi)容??:??介紹AAC格式音頻文件解析?? ??金句分享??:??你不能選擇最好的,但最好的會來選擇你——泰戈爾?? 本文未經(jīng)允許,不得轉(zhuǎn)發(fā)??!

    2024年02月04日
    瀏覽(25)
  • 【音視頻處理】音頻編碼AAC詳解,低碼率提高音質(zhì)?

    【音視頻處理】音頻編碼AAC詳解,低碼率提高音質(zhì)?

    大家好,歡迎來到停止重構(gòu)的頻道。 本期我們介紹 音頻編碼格式AAC 。 AAC是音頻最常用的編碼格式之一 ,幾乎所有的播放器都支持這個編碼格式。 其他音頻編碼格式都是類似的,只是某些細(xì)節(jié)存在差別,如壓縮算法、某些音頻參數(shù)存在限制等。 我們按這樣的順序討論?:

    2024年02月09日
    瀏覽(18)
  • Qt/C++音視頻開發(fā)69-保存監(jiān)控pcm音頻數(shù)據(jù)到mp4文件/監(jiān)控錄像/錄像存儲和回放/264/265/aac/pcm等

    用ffmpeg做音視頻保存到mp4文件,都會遇到一個問題,尤其是在視頻監(jiān)控行業(yè),就是監(jiān)控攝像頭設(shè)置的音頻是PCM/G711A/G711U,解碼后對應(yīng)的格式是pcm_s16be/pcm_alaw/pcm_mulaw,將這個原始的音頻流保存到mp4文件是會報錯的,在調(diào)用avformat_write_header寫文件頭的時候提示(-22) Invalid argument,

    2024年04月11日
    瀏覽(38)
  • 音視頻開發(fā) RTMP協(xié)議發(fā)送H.264編碼及AAC編碼的音視頻(C++實現(xiàn))

    音視頻開發(fā) RTMP協(xié)議發(fā)送H.264編碼及AAC編碼的音視頻(C++實現(xiàn))

    RTMP(Real Time Messaging Protocol)是專門用來傳輸音視頻數(shù)據(jù)的流媒體協(xié)議,最初由Macromedia 公司創(chuàng)建,后來歸Adobe公司所有,是一種私有協(xié)議,主要用來聯(lián)系Flash Player和RtmpServer,如 FMS , Red5 , crtmpserver 等。RTMP協(xié)議可用于實現(xiàn)直播、點播應(yīng)用,通過 FMLE(Flash Media Live Encoder) 推送音

    2023年04月08日
    瀏覽(29)
  • 【秒懂音視頻開發(fā)】15_AAC編碼實戰(zhàn)

    【秒懂音視頻開發(fā)】15_AAC編碼實戰(zhàn)

    本文將分別通過命令行、編程2種方式進(jìn)行AAC編碼實戰(zhàn),使用的編碼庫是libfdk_aac。 fdk-aac對輸入的PCM數(shù)據(jù)是有參數(shù)要求的,如果參數(shù)不對,就會出現(xiàn)以下錯誤: 采樣格式 必須是16位整數(shù)PCM。 采樣率 支持的采樣率有(Hz): 8000、11025、12000、16000、22050、24000、32000 44100、48000、

    2024年02月03日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包