AAC音頻格式分析

關于AAC音頻格式基本情況,可參考維基百科http://en.wikipedia.org/wiki/Advanced_Audio_Coding

?

AAC音頻格式分析

AAC音頻格式有ADIF和ADTS:?

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

ADTS:Audio Data Transport Stream 音頻數據傳輸流。這種格式的特征是它是一個有同步字的比特流,解碼可以在這個流中任何位置開始。它的特征類似于mp3數據流格式。?

簡單說,ADTS可以在任意幀解碼,也就是說它每一幀都有頭信息。ADIF只有一個統一的頭,所以必須得到所有的數據后解碼。且這兩種的header的格式也是不同的,目前一般編碼后的和抽取出的都是ADTS格式的音頻流。?

語音系統對實時性要求較高,基本是這樣一個流程,采集音頻數據,本地編碼,數據上傳,服務器處理,數據下發,本地解碼?

ADTS是幀序列,本身具備流特征,在音頻流的傳輸與處理方面更加合適。?

??

ADTS幀結構:

header

body

ADTS幀首部結構:

序號 長度(bits) 說明
1 Syncword 12 all bits?must?be 1
2 MPEG version 1 0 for MPEG-4, 1 for MPEG-2
3 Layer 2 always 0
4 Protection Absent 1 et to 1 if there is no CRC and 0 if there is CRC
5 Profile 2 the?MPEG-4 Audio Object Type?minus 1
6 MPEG-4 Sampling Frequency Index 4 MPEG-4 Sampling Frequency Index?(15 is forbidden)
7 Private Stream 1 set to 0 when encoding, ignore when decoding
8 MPEG-4 Channel Configuration 3 MPEG-4 Channel Configuration?(in the case of 0, the channel configuration is sent via an inband PCE)
9 Originality 1 set to 0 when encoding, ignore when decoding
10 Home 1 set to 0 when encoding, ignore when decoding
11 Copyrighted Stream 1 set to 0 when encoding, ignore when decoding
12 Copyrighted Start 1 set to 0 when encoding, ignore when decoding
13 Frame Length 13 this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)
14 Buffer Fullness 11 buffer fullness
15 Number of AAC Frames 2 number of AAC frames (RDBs) in ADTS frame?minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame
16 CRC 16 CRC if?protection absent?is 0


MPEG-4 Audio

  • Company:?ISO
  • Samples:?http://samples.mplayerhq.hu/MPEG-4/
  • Samples:?http://samples.mplayerhq.hu/A-codecs/AAC/
  • Samples:?sample repo at standards.iso.org
  • Sample Docs:?sample docs

Specification links:

  • MPEG-4 Audio:?ISO/IEC 14496-3:2009
  • Conformance:?ISO/IEC 14496-26:2010

Contents

?[hide]?
  • 1?MPEG-4 Audio
  • 2?Subparts
  • 3?Audio Specific Config
  • 4?Audio Object Types
  • 5?Sampling Frequencies
  • 6?Channel Configurations

MPEG-4 Audio

MPEG-4 includes a system for handling a diverse group of audio formats in a uniform matter. Each format is assigned a unique Audio Object Type (AOT) to represent it. The common format Global header shared by all AOTs is called the Audio Specific Config.?

Subparts

  • Subpart 0: Overview
  • Subpart 1: Main (Systems?Interaction)
  • Subpart 2: Speech coding - HVXC
  • Subpart 3: Speech coding - CELP
  • Subpart 4: General Audio coding (GA) -?AAC, TwinVQ, BSAC
  • Subpart 5: Structured Audio (SA)
  • Subpart 6: Text To Speech Interface (TTSI)
  • Subpart 7: Parametric Audio Coding - HILN
  • Subpart 8: Parametric coding for high quality audio - SSC (and?Parametric Stereo)
  • Subpart 9:?MPEG-1/2 Audio?in MPEG-4
  • Subpart 10: Lossless coding of oversampled audio - DST
  • Subpart 11: Audio lossless coding -?ALS
  • Subpart 12: Scalable lossless coding -?SLS

Audio Specific Config

The Audio Specific Config is the global header for MPEG-4 Audio:

5 bits: object type
if (object type == 31)6 bits + 32: object type
4 bits: frequency index
if (frequency index == 15)24 bits: frequency
4 bits: channel configuration
var bits: AOT Specific Config

Audio Object Types

MPEG-4 Audio Object Types:

  • 0: Null?
  • 1:?AAC?Main
  • 2:?AAC?LC (Low Complexity)
  • 3:?AAC?SSR (Scalable Sample Rate)
  • 4:?AAC?LTP (Long Term Prediction)
  • 5: SBR (Spectral Band Replication)
  • 6:?AAC?Scalable
  • 7:?TwinVQ
  • 8:?CELP?(Code Excited Linear Prediction)
  • 9: HXVC (Harmonic Vector eXcitation Coding)
  • 10: Reserved
  • 11: Reserved
  • 12: TTSI (Text-To-Speech Interface)
  • 13: Main Synthesis
  • 14: Wavetable Synthesis
  • 15: General MIDI
  • 16: Algorithmic Synthesis and Audio Effects
  • 17: ER (Error Resilient)?AAC?LC
  • 18: Reserved
  • 19: ER?AAC?LTP
  • 20: ER?AAC?Scalable
  • 21: ER?TwinVQ
  • 22: ER?BSAC?(Bit-Sliced Arithmetic Coding)
  • 23: ER?AAC?LD (Low Delay)
  • 24: ER?CELP
  • 25: ER HVXC
  • 26: ER HILN (Harmonic and Individual Lines plus Noise)
  • 27: ER Parametric
  • 28: SSC (SinuSoidal Coding)
  • 29: PS (Parametric Stereo)
  • 30:?MPEG Surround
  • 31: (Escape value)
  • 32:?Layer-1
  • 33:?Layer-2
  • 34:?Layer-3
  • 35: DST (Direct Stream Transfer)
  • 36:?ALS?(Audio Lossless)
  • 37:?SLS?(Scalable LosslesS)
  • 38:?SLS?non-core
  • 39: ER?AAC?ELD (Enhanced Low Delay)
  • 40: SMR (Symbolic Music Representation) Simple
  • 41: SMR Main
  • 42:?USAC?(Unified Speech and Audio Coding) (no?SBR)
  • 43: SAOC (Spatial Audio Object Coding)
  • 44: LD?MPEG Surround
  • 45:?USAC

Sampling Frequencies

There are 13 supported frequencies:

  • 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

Channel Configurations

These are the channel configurations:

  • 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383464.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383464.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383464.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tar壓縮隱藏文件

如果想tar 壓縮包含隱藏文件的目錄,同時排除掉部分無用的目錄 tar -czvf 20161009.tar.gz * .[!.]* --exclude .git 在Linux下打包tar文件時添加密碼的方法 在當前目錄下有一個pma目錄的文件夾: 1、使用tar對文件壓縮加密: 代碼如下: # tar -zcvf - pma…

linux 怎么把^M去掉

在linux下,不可避免的會用VIM打開一些windows下編輯過的文本文件。我們會發現文件的每行結尾都會有一個^M符號,這是因為 DOS下的編輯器和Linux編輯器對文件行末的回車符處理不一致, 對于回車符的定義: windows:0D0A un…

關于cp命令中拷貝所有的寫法

今天在編寫一個腳本的時候,發現一個比較奇怪的問題:就是在使用cp拷貝當前目錄下所有文件到目標目錄的時候,源和目標大大不同。原來一直沒有留意有這樣的問題,后來查了些資料,才知道以前一直使用的格式有誤,…

cp -r 和 cp -R 的區別

今天倒騰linux根文件系統的時候發現 cp -r /dev /dev_bak 時,竟然會 將磁盤設備中的數據進行一次拷貝,而不是僅僅建立設備文件。于是到網上搜了一把,收獲不小。http://www.loveunix.net/html/200407/33920.html這里有人問同樣的問題&#xff…

Makefile選項CFLAGS,LDFLAGS,LIBS

CFLAGS 表示用于 C 編譯器的選項, CXXFLAGS 表示用于 C 編譯器的選項。 這兩個變量實際上涵蓋了編譯和匯編兩個步驟。 CFLAGS: 指定頭文件(.h文件)的路徑,如:CFLAGS-I/usr/include -I/path/include。同樣地…

smbclient和掛載samba共享目錄

1,列出某個IP地址所提供的共享文件夾 smbclient -L 198.168.0.1 -U marsaber%12332112345672,像FTP客戶端一樣使用smbclient smbclient //192.168.0.1/tmp -U marsaber%1233211234567 執行smbclient命令成功后,進入smbclient環境,出現提示符…

linux 下source命令

當我修改了/etc/profile文件,我想讓它立刻生效,而不用重新登錄;這時就想到用 source 命令,如:source /etc/profile對source進行了 學習 ,并且用它與sh 執行腳本進行了對比,現在總結一下。source命令&#x…

make Image uImage與zImage的區別

內核編譯(make)之后會生成兩個文件,一個Image,一個zImage,其中Image為內核映像文件,而zImage為內核的一種映像壓縮文件,Image大約為4M,而zImage不到2M。 那么uImage又是什么的&#…

ubuntu下tftp的安裝、配置、使用

1. 安裝$ apt-get install tftp-hpa tftpd-hpa2. 建立目錄$ mkdir /tftpboot # 這是建立tftp傳輸目錄。$ sudo chmod 0777 /tftpboot$ sudo touch test.txt # test.txt文件最好輸入內容以便區分3. 配置$ sudo vi /etc/default/tftpd-hpa# /etc/default/tftpd-hpaTFTP_USERNAME&…

ubuntu下搭建nfs服務器

1.1 搭建NFS服務器 NFS(Network FileSystem,網絡文件系統)是由SUN公司發展,并于1984年推出的技術,用于在不同機器,不同操作系統之間通過網絡互相分享各自的文件。NFS設計之初就是為了在不同的系統間使…

uboot的常用命令詳解

U-Boot還提供了更加詳細的命令幫助,通過help命令還可以查看每個命令的參數說明。由于開發過程的需要,有必要先把U-Boot命令的用法弄清楚。接下來,根據每一條命令的幫助信息,解釋一下這些命令的功能和參數。 進入uboot的命令行提示…

minicom 串口信息過長分行顯示

有時串口輸出一行信息比較多,一行顯示不下,這個時候,我們可以用minicom的本身組合鍵設置,超過一行時自動卷起。 minicom 組合鍵的用法是:先按CtrlA組合鍵,然后松開這兩個鍵,再按Z鍵。另外還有一…

uboot 的 bootcmd 和bootargs參數詳解

U-boot的環境變量值得注意的有兩個: bootcmd 和bootargs。 bootargsconsolettyS1,115200n8 mem32M0x0 ispmem8M0x2000000 rmem24M0x2800000 init/linuxrc rootfstypesquashfs root/dev/mtdblock2 rw mtdpartsjz_sfc:256k(boot),2560k(kernel),2048k(root),-(appfs) …

MTD和 uboot中的bootargs 下屬 mtdparts

MTD 設備是象閃存芯片、小型閃存卡、記憶棒等之類的設備,它們在嵌入式設備中的使用正在不斷增長。 MTD 驅動程序是在 Linux 下專門為嵌入式環境開發的新的一類驅動程序。相對于常規塊設備驅動程序,使用 MTD 驅動程序的主要優點在于 MTD 驅動程序是專門為…

Linux應用程序在內存中的地址布局

棧:局部變量(初始化的和未初始化的,但不包含局部靜態變量)、局部只讀變量(const)堆:動態分配的區域(如使用malloc函數申請的區域)BSS段:存儲未初始化的全局變…

比較zImage和uImage的區別

一、vmlinuz vmlinuz是可引導的、壓縮的內核。“vm”代表“Virtual Memory”。Linux 支持虛擬內存,不像老的操作系統比如DOS有640KB內存的限制。Linux能夠使用硬盤空間作為虛擬內存,因此得名“vm”。 vmlinuz的建立有兩種方式。一是編譯內核時通過“make…

編譯faac錯誤分析

編譯faac時遇到了以下的編譯錯誤: /home/xuxuequan/Ingenicwork/toolchain/mips-gcc472-glibc216-32bit/mips-linux-gnu/libc/usr/include/string.h:365:26: error:ambiguates old declaration const char* strcasestr(const char*, const char*) 解決方案&#x…

gcc與g++的區別

一:gcc與g比較 編譯c/c代碼的時候,有人用gcc,有人用g,于是各種說法都來了,譬如c代碼用gcc,而 c代碼用g,或者說編譯用gcc,鏈接用g,一時也不知哪個說法正確,如果…

交叉編譯openssl不修改Makefile的方法

網上流傳的方法都是要修改Makefile的cc值&#xff0c;我來說個不用修改的方法作者&#xff1a;帥得不敢出門 C哈哈堂<31843264>openssl 下載http://www.openssl.org/source/tar -xvf openssl-1.0.1c.tar.gzcd openssl-1.0.1c/CCarm-linux-gcc ./config no-asm shared -…

編譯boa過程記錄

boa是比較老的HTTP的本地Server&#xff0c;本文是針對0.94.13版本的編譯過程做出記錄 1.下載boa的程序包&#xff0c;本文的編譯是針對misp平臺的交叉編譯 2.在編譯之前&#xff0c;需要針對產品的文件系統和修改編譯時可能遇到的錯誤&#xff0c;修改相關的文件。 &#xff…