AAC的各种规格

article/2025/7/3 20:54:30

Hi,又来写点儿小记录心得吧,这次是在准备AAC音频解码的规格中发现和总结出的一些问题,大概的情况在这里简要做一小记,为我们最后确立规格提供参考,当然我对AAC规格的了解还很稚嫩,有些表述不太确切的地方,还请大家指正:

 

一、规格(profile)问题:

wiki上说到,AAC共有9种规格,以适应不同的场合的需要:

l         MPEG-2 AAC LC 低复杂度规格(Low Complexity)--比较简单,没有增益控制,但提高了编码效率,在中等码率的编码效率以及音质方面,都能找到平衡点

l         MPEG-2 AAC Main 主规格    

l         MPEG-2 AAC SSR 可变采样率规格(Scaleable Sample Rate)

l         MPEG-4 AAC LC 低复杂度规格(Low Complexity)------现在的手机比较常见的MP4文件中的音频部份就包括了该规格音频文件

l         MPEG-4 AAC Main 主规格   ------包含了除增益控制之外的全部功能,其音质最好

l         MPEG-4 AAC SSR 可变采样率规格(Scaleable Sample Rate)

l         MPEG-4 AAC LTP 长时期预测规格(Long Term Predicition)

l         MPEG-4 AAC LD 低延迟规格(Low Delay)

l         MPEG-4 AAC HE 高效率规格(High Efficiency)-----这种规格适合用于低码率编码,有Nero ACC 编码器支持

后来也看了14496-3标准,里面定义的profile除了上述的一些规格,还有如Scalable 、 TwinVQ、  CELP、  HVXC等更多其他的profile。

目前听到用的比较多的应该是LC和HE(适合低码率)。流行的Nero AAC的命令行编码程序就支持LC,HE,HEv2这三种,试用后,用MediaInfo分析了编码后的AAC音频,发现规格显示都是LC,当时就感到奇怪,不是说支持三种规格吗?然后才又查资料发现,原来HE其实就是AAC(LC)+SBR技术,HEv2就是AAC(LC)+SBR+PS技术,难怪用MediaInfo分析后,HE规格的文件即显示:LC(SBR),哈哈,既然说到了这里,就再简单的说下HE吧:

HE:“high efficiency”(高效性)。HE-AAC v1(又称AACPlusV1,SBR)用容器的方法加了原AAC(LC)+SBR技术。呵呵,SBR其实代表的是Spectral Band Replication(频段复制)。简单概括一下,音乐的主要频谱集中在低频段,高频段幅度很小(但很重要,决定了音质),如果对整个频段编码,要么为了保护高频造成低频段编码过细以致文件巨大,要么为了保存了低频的主要成分而失去高频成分以致丧失音质。SBR把频谱切割开来,低频单独编码保存主要成分,高频单独放大编码保存音质,“统筹兼顾”了,在减少文件大小的情况下还保存了音质,完美的化解了一对矛盾,真是聪明透顶啊~~

那么HEv2又是什么呢?这个好像更牛些,因为它用容器的方法包含了HE-AAC v1和PS技术。PS指“parametric stereo”(参数立体声)。这个其实好理解,原来的立体声文件,文件大小是一个声道的两倍。但是两个声道的声音存在某种相似性,根据香农信息熵编码定理,相关性应该被去掉才能减小文件大小。所以PS技术存储了一个声道的全部信息,然后,花很少的字节用参数描述另一个声道和它不同的地方~怎么咱就没想到呢?

这样,HEv1和HEv2用个图简单表示下就是:(图中的AAC即指的是原来的AAC-LC)

 

至此,对于HE和HEv2 profile的AAC序列我算是初步准备好了,但是由于NERO AAC编码后产生的是经过MP4容器封装后的,而我们的decoder需要处理的是未经封装的AAC流,因此还需要处理从MP4封装格式中extract出AAC流的步骤;哦,这里提到了MP4容器封装,就再把我看到的一些关于MP4容器的心得插入在此也说下:

其实.mp4格式规范是MPEG4 Part 1标准定义的。但是这个格式本身相当通用,并不是只能用来存贮MPEG4视频格式。举个例子,一个.mp4文件中包含的可能是H.263的视频轨及AMR的音频轨。这样它和MPEG4视频压缩算法就半点边都沾不上。但它绝对是一个合法的.mp4文件。从这个意义上讲,.mp4是一个独立的封包格式。也许它的原始设计意图是仅用于MPEG4,但事实上大家觉得它很好用,已经把它扩展成可以包容其它格式了。现在市场上比如某产品号称“支持MP4播放”,到底是什么意思呢?如果它是指可以播放*.mp4这种文件,那里面的音频和视频格式它能支持多少种组合呢?没说清楚吧。举个极端的例子,假设一台设备仅支持“视频为未压缩YUV以及不带音频轨的.mp4文件,但它的文件名确实可以是*.mp4,是不是也可以在盒子上印上“支持MP4”呢?那么,买回去,复制一个网上下载的.mp4文件(MPEG4视频和AAC音频应该是个比较流行的组合),结果却发现根本不能播放。就算不举这么极端的例子,一般.mp4文件中常见的视频音频格式也有多种,一个产品要做到支持所有的格式是很难的。所以,如果要准确的描述,应该写清楚类似“支持视频格式为MPEG4或H.264/AVC,音频为AMR或AAC的*.mp4文件”。其实更严格一些,还应该写清楚MPEG4支持到哪种profile, AMR是NB还是WB,AAC是LC还是HE等更多细节。当然,这种误导型的说明应该在减少,不过如果有比较确切的格式需求,最好还是先搞清楚这些细节。看到网上还有人说到N73,其实只支持视频为MPEG4 Simple Profile / Advanced Simple Profile及H.263 Profile 0 & 3,音频为AMR-NB/WB或者AAC-LC, HE-AAC的mp4文件。如果你放一个视频格式为H.264/AVC的mp4上去,是无法播放出画面来的。呵呵,扯远了~~~。说得不准确的请大家指教。

好,回到刚才的要从MP4封装格式中extract出AAC流的步骤,在网上找了一些工具,如MP4UI,MP4BOX,Yamb(mp4box的GUI程序),采用它们进行extract操作后发现,原来的SBR和PS等信息咋没有了,都变成LC规格的AAC文件啦。好容易准备的测试流,难道还是不能用?于是一番苦寻发现,可能是SBR和PS等信息在ADTS头中是无法体现的,所以分析ADTS格式头的AAC,就无法判别是否是HE和HEv2啦。但是我总觉得SBR和PS等技术信息在AAC流中应该还是存在的。因为我还在一个国外的论坛上看到这么几句话:There's no requirement for MP4 with AAC to have SBR indicated in the headers. It's still correct not to have it marked and have SBR or PS data in the stream anyway. Likewise, decoding a frame and not seeing any SBR or PS info doesn't mean you can't find it further up in the stream anyway(我理解就是说SBR OR PS信息不一定在Header中有,但是并不意味着你不能进一步在stream中发现它)。

昨天,又发现了一个新的地方,就是HE-AAC的.mp4码流,经过extract出AAC(ADTS)后,44.1KHZ的变成了22.05KHZ。HEv2-AAC的.mp4码流,经过extract出AAC(ADTS)后,不但44.1KHZ的变成了22.05KHZ(一半),连2channels也变成了1channels!啊,这个问题更奇怪了,在论坛上找,发现也有人有此问题:“I get 22050Hz, 1 channel for audio that is in fact 44100Hz, 2channels and having both SBR and PS”。

后来看到MSDN中的AAC Decoder的描述中有这么一小段话:

The media type gives the sample rate and number of channels prior to the application of spectral band replication (SBR) and parametric stereo (PS) tools, if present. The effect of the SBR tool is to double the decoded sample rate relative to the core AAC-LC sample rate. The effect of the PS tool is to decode stereo from a mono-channel core AAC-LC stream.

我的理解是AAC的decoder如果支持SBR和PS,会将AAC-HEV1(SBR)中的sample rate提高一倍,而会将AAC-HEV2(SBR+PS)中不仅sample rate提高一倍,单声道也提高至双声道了。结合前面提到的SBR(频段复制)和PS(参数立体声)技术的简单介绍,好像觉得这样是有点儿道理的哦~~

用IPP example提供的解码工具simple_player简单试了下,对于44.1khz,stereo的HEv2-AAC的.mp4码流,经过extract出22.05KHZ,mono 的AAC(ADTS)后,再使用simple_player进行音频解码测试,解完后,果然发现又恢复了44.1khz和stereo。(但目前也测试了好几种extract出的HE和HEv2的aac码流,有的能将sample rate和channel 又double回来,有的又不能,这个具体原因是不是由于Ipp example提供的解码器的问题还不确定)。

另外,用simple_player如果直接decoder编码出的经过封装的.mp4格式的AAC音频的话,发现:其它都正常,只AAC-HEv2格式的.mp4音频解码后变成了单声道。难道是解码器中的PS tools没能发挥作用?初步估计应该是IPP 的那个小解码器的问题吧。

以上是关于HE和HEV2规格在学习过程中遇到的一些问题。

 

二、ADTS&ADIF

刚才上面说到了ADTS头格式的AAC。其实,AAC的音频文件格式有以下两种:

ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。

ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。

简单说,ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。且这两种的header的格式也是不同的,具体的组织结构在这里就不详说了。

我们现在目前一般编码后的和抽取出的都是ADTS格式的。

 

三、其他规格

对于那9种规格,目前使用上述的NERO AAC提供的命令行编码工具可以得到LC,HE和HEv2的,只是需要再从MP4封包中extract出来。剩下的其他profile目前我使用FAAC,(最终选取使用nero burning Rom 6和FAAC插件),可以编码得到除MPEG-4 AAC HE和MPEG-4 AAC LC两种以外的其他规格了,且通过一些选项,可以直接输出不带MP4封装格式的ADTS的AAC文件。至此,实际上,9种规格中,除了MPEG-4 AAC LD没能准备外,其他规格初步算是可以准备好了。

说了这么多,估计也看烦了,最后我们再来看IPP example中提供的关于AAC decoder的文档说明:

The decoder supports the following features:

Low Complexity Profile (AAC_LC) is implemented.

Long Term Prediction Profile (AAC_LTP) is implemented

Main Profile (AAC_MAIN) is implemented

Scalable Sampling Rate Profile (AAC_SSR) is implemented

MPEG-4 SBR (Spectral Band Replication) extension is implemented   //不就是支持HE嘛

PS (Parametric stereo) is implemented  //不就是支持HEv2嘛

IS, MS, TNS, PNS tools are supported   //(Intensity Stereo,简称IS)和Mid/Side (M/S) stereo 都是应该指联合立体声技术,简单的说,联合立体声的是对原来的取样进行的一定的渲染工作,使声音更”好听”些。时域噪音修整(Temporal Noise Shaping,TNS):这项神奇的技术可以通过在频率域上的预测,来修整时域上的量化噪音的分布。在一些特殊的语音和剧烈变化信号的量化上,TNS技术对音质的提高贡献巨大!知觉噪音代替(Perceptual Noise Substitution,PNS):这也是MPEG-4 AAC中才有的工具。

 ADIF, ADTS, MP4 formats are supported.

应该可以看出,IPP 的AAC DECODER提供对以上profile规格和ADIF, ADTS, MP4 formats的解码;

 

本文来自CSDN博客,出处:http://blog.csdn.net/AXDC_QA_Team/archive/2009/06/15/4271043.aspx

 

转载于:https://www.cnblogs.com/ciey/archive/2009/10/24/1589240.html


http://chatgpt.dhexx.cn/article/1FONjLw2.shtml

相关文章

Android Audio混音实践篇

Android Audio混音实践篇 简介 本篇文章主要介绍Android Audio模块的MixerThread混音业务如何实现的?建议在阅读这篇文章之间先阅读混音理论基础篇,并且在分析源码之前:头脑里构想一个大致的混音过程,多路音频AudioTrack叠加在一…

6 FFmpeg从入门到精通-FFmpeg滤镜使用

1 FFmpeg从入门到精通-FFmpeg简介 2 FFmpeg从入门到精通-FFmpeg工具使用基础 3 FFmpeg从入门到精通-FFmpeg转封装 4 FFmpeg从入门到精通-FFmpeg转码 5 FFmpeg从入门到精通-FFmpeg流媒体 6 FFmpeg从入门到精通-FFmpeg滤镜使用 7 FFmpeg从入门到精通-FFmpeg中Linux设备操作 8 FFm…

量子计算--复习+量子信息--铺垫(学习笔记)

本次,我对前面所学的算符进行一定的拓展并对接下来的量子信息的学习做一些铺垫。 一.些概念的复习和拓展 在前面,我对量子计算的一些概念进行了简单的讲解,而且对一些概念描述的并不完整,所以此次我会完善一下厄米算符、幺正算符…

布尔定理及证明(完整版)

这篇文章的目的是以布尔代数公理证明定理。 对偶原理:0with1, with 互换以后,公理(定理)任然成立。 布尔代数的公理如下 单变量的布尔代数定理如下 单变量的布尔代数定理很容易用真值表证明。 多变量的布尔定理如下 交换律&…

欧拉函数、欧拉定理、费马小定理

生病了,耽搁了两天。明天开始继续和队友们一起奋战。。。 总结一下,自己以前学过的数论方面的知识。 今天小小的搜索一下,计算机数论真的是很庞大的一个领域。推荐一本书《计算数论》。准备买了、 这里先浅议下欧拉定理和欧拉函数。 很久…

Broekett定理):

设系统满足在邻域内连续可微,则该系统存在连续可微控制律使得被渐进稳定的必要条件是: 线性化之后的系统没有特征根为正实部的不可控模态; 存在的邻域,满足对任意,存在相应的定义在上的控制,使系统的解从…

海伯伦定理

谓词公式通过等价关系及推理规则化成相应的子句集 在谓词逻辑中,把原子谓词公式及其否定统称为文字。 定义3.5:任何文字的析取式称为子句。 例如: P(x)∨Q(x), P(x,f(x))∨Q(x,g(x)) 定义3.6:不包含任何文字的子句称为空子句…

费马小定理、欧拉定理与扩展欧拉定理(含证明)

这里就以自己做好的PPT图片的形式给出了:

量子笔记:单比特量子门、泡利矩阵

目录 0. 概要 1. 量子门基本性质 1.1 量子门与布洛赫球面的关系 1.2 量子门与幺正矩阵的关系 2. 泡利矩阵: 量子X,Y,Z,ID门 2.1 量子X门(量子非门) 2.2 量子Z门 2.3 量子Y门 2.4 量子ID门 6. 量子H门 7. 量子Z旋转门 7.1 量子S门 7.2 量子S…

图论之毕克定理证明

毕克定理是小学四年级奥赛内容,无意间从一本教材上看到,觉得定理蛮有意思,也和自己从事的工作有一些关联,就在网上找了一些证明资料,结合自己的思考,稍微挖掘了以下,聊以记录。 毕克定理是指一…

chapter 4 能带理论 energy band

继承自chapter 3 的自由电子模型: 4.1 单电子近似 One electron approximation 列出电子运动的薛定谔方程: E Ψ − ℏ 2 2 m ∇ 2 Ψ U Ψ E \Psi -\frac{\hbar^2}{2m} \nabla^2 \Psi U \Psi EΨ−2mℏ2​∇2ΨUΨ 根据电子在晶体中运动的实际情…

能带图最好的理解——克朗尼格-朋奈模型(Kronig-Penney模型)

布洛赫波函数 整体的思想还是基于建模,大家应该都知道在自由电子模型中,能量和波矢的关系 那么大家的第一个疑问首先是,空间结构的周期性应该反应在空间坐标上,为什么K空间也会满足周期性呢? 这里面就不得不说&…

固体物理-复习重点

晶体:是由离子,原子或分子(统称为粒子)有规律的排列而成的,具有周期性和对称性 非晶体:有序度仅限于几个原子,不具有长程有序性和对称性 点阵:格点的总体称为点阵 晶格:晶…

图书馆管理系统用例图

第一次画用例图,多多指教

网上选课系统用例图

转载于:https://www.cnblogs.com/whs2818388/p/4925219.html

学生成绩系统用例图模型

在uml模型共享平台上发布了一个学生成绩系统的需求,并且绘制出了用例图,如下图,欢迎大家参与讨论,该系统全部模型查看连接http://euml.trufun.net/ 本文转自 trufun 51CTO博客,原文链接:http://blog.51cto.…

UML用例图分析——铁路售票系统

该文档就是对简单铁路售票系统,写的用例图和用例规约。下面是目录个人水平有限,有需要的可以下载参考。有事可留言。下载链接:点击下载文档

简单的图书管理系统用例图(UML)

运用工具:Presson 自我评价:简单肤浅还可能是不规范的,初次接触用例图若有 错误请指出! 此外:本人至今是软件工程大一新生,希望能认识更多志同道合的人共同努力,交流学习经验&#xff0c…

“远程网络教学系统”UML用例图(练习题)

“远程网络教学系统”UML用例图(练习题) 题目用例图学生用户教师用户系统管理员 用例文档的示例学生用户的示例:学生用户查找课件教师用户的示例:教师用户登录系统管理员的示例:系统管理员维护网站页面 题目 “远程网…