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.mzph.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…