1、AAC Transport Protocols and File Formats
正如MPEG-4标准指出的那样:“In all of the MPEG-4 tools for audio coding, the coding standard ends at the point of constructing access units that contain the compressed data.” 由于音频可以单独使用或与视频结合使用,并且可以流式传输或存储,因此已经开发出传输和存储格式。
通常指定传输格式,以便接收器可以同步和解码已经传输的比特流,而存储格式则需要从头开始读取以了解文件。 当然,传输流也可以存储为文件,但是由于其同步或成帧开销,它可能会占用更多存储空间,并且可能不支持存储格式中存在的元数据或索引功能。
另一种分类是格式是仅为音频指定的格式,还是可以包含视频或其他内容类型的格式。 纯音频格式具有较少的处理和传输开销,并且例如,将音乐流式传输到手机很受欢迎。历史上,AAC格式ADIF和ADTS在MPEG-2第7部分中定义为AAC的原始传输和存储格式。 MPEG-4引入了另外两种格式LATM和LOAS,它们不仅为传统的AAC定义,而且还为AAC LD和ELD等较新的变体定义。
将AAC与MPEG-4第2部分或AVC视频相结合的多媒体内容流通常是通过IP网络上的RFC 3640协议,以及在DVB网络上的MPEG-2传输流中使用MPEG-2节目基本流来完成的。 由于单向广播电缆和卫星网络的体系结构以及IP网络的双向单播数据包传输的结构差异,已经形成了标准的二分法。 通过在MPEG-2传输流上传输IP流或在IP上发送MPEG-2传输流的可能性,这变得更加复杂。 还存在用于通过HTTP流音频内容的家庭媒体网络的标准。
在大多数应用领域,MPEG-4文件格式或密切相关的3GPP文件格式用于存储。例如,iPod和iTunes的内容基于MP4文件格式。
传输格式用于广播,Internet广播,电话会议和实时流媒体应用程序中,其中接收器或播放器软件可以同步到向所有用户广播的通用比特流。
尽管Web媒体行业可能将其宽松地称为流媒体,但是大多数点播新媒体内容不是流媒体而是以存储格式逐步下载。在此,渐进式仅表示存储格式已被约束为要求所有指针或元数据都位于文件的开头,因此可以在部分文件仍在下载时开始进行解码和回放。后来的实现(通常称为HTTP流)使用HTTP Get Range请求下载文件的一部分。这允许文件内容的随机访问或“特技播放”。最近,它已扩展到“自适应流”(请参阅自适应流协议),其中在文件的小段中请求下载,以允许在查看内容时适应可用网络带宽的变化。
应当理解,传输格式使接收设备的回放速率与发送器或服务器的时基同步,而在下载或HTTP流中,接收方从服务器请求内容,并且回放速率是异步的 到服务器或原始来源。
弗劳恩霍夫(Fraunhofer)积极参与大多数组织制定传输和存储格式标准的组织,例如MPEG,3GPP,IETF,DVB,ATSC,DLNA,ETSI和DVD论坛,以及进行流技术研究。 鼓励客户咨询Fraunhofer,以确保他们使用最适合其应用程序的格式。
2、Comparison Table of AAC Transport Formats
下表显示了每种AAC传输或存储格式的重要功能和定义的标准:
| 协议/格式 | 类型 | 制定方 | 特点 | 典型用途 |
|---|---|---|---|---|
| ADTS (Audio Data Transport Stream) | Transport Audio Only | MPEG-2 ISO/IEC 13818-7(also in MPEG-4) | 来自MPEG-2 AAC的具有同步信息的独立的比特流 | MPEG-2 AAC的传输有时用于手机和设备,因为解析MP4FF过去在内存方面一直要求很高。 某些能够播放AAC-LC或HE AAC的手机仅支持ADTS |
| ADIF (Audio Data Interchange Format) | Storage Audio Only | MPEG-2 ISO/IEC 13818-7(also in MPEG-4) | 文件开头的一个标头包含解码器特定的信息,后跟随后的音频访问单元,而没有其他同步信息。 没有有关访问单元的位置或长度的信息 | AAC访问单元的最低开销格式。 由于不可能进行随机访问,也无法对其他MPEG-4数据进行多路复用,因此很少使用它 |
| LATM (Low-overhead MPEG-4 Audio Transport Multiplex) | Transport Audio Only | MPEG-4 ISO/IEC 14496-3 | 独立的比特流。 允许使用MPEG-4中的错误恢复语法 | 在3GPP中用作HE AAC v2的传输(无LOAS同步层)。 不可能进行随机访问(在存储的比特流中)。 |
| LATM/LOAS (Low Overhead Audio Stream) | Transport Audio Only | MPEG-4 ISO/IEC 14496-3 | 具有同步信息的LATM,允许随机访问或跳过。 可能包括MPEG-4错误保护和弹性。 独立的比特流 | AAC低延迟的“比特流”格式(因为LD仅在错误弹性变体)。 在MPEG-2传输流中携带AAC时也使用 |
| RFC 3016 | Transport Audio/Video | IETF | 在RTP(实时协议)流中传输MPEG-4音频LATM数据包和MPEG-4视频数据包。 RTP流可以是音频或视频 | 3GPP流 |
| RFC 3640 (RTP Payload Format for Transport of MPEG-4 Elementary Streams) | Transport Audio/Video | IETF | 在RTP(实时协议)流中承载包括MPEG-4音频在内的MPEG-4基本流作为原始访问单元 | ISMA 2.0流式传输和高品质视频会议 |
| MPEG-2 Transport Stream | Transport Audio/Video | ISO/IEC 13818-1 | 包含ADTS,LOAS或MPEG-4同步层流的PES数据包。 | DVB [ETSI TS 101 154]使用LOAS变体 |
| MP4FF (MP4 File Format) | Storage Audio/Video | MPEG-4 ISO IEC 14496-12,14 | MPEG-4文件格式–音频和视频流的存储 | 用于存储的格式,以及用作文件IP流的存储容器。 用于iTunes以及许多Flash和YouTube文件。 允许真正的随机访问 |
| 3GP File Format | Storage Audio/Video | ETSI TS 126244 | 与MPEG-4文件格式非常相似,但包括对非MPEG编解码器的支持,例如H.263和GSM-AM | |
| ShoutCast(快播) | Transport Audio Only | AOL | ADTS的HTTP流 | 网络广播 |
| Flash Video File Format(Flash视频文件格式) | Storage Audio/Video | Adobe | 某些较早版本的FLV格式可能包含AAC比特流,但是较新的播放器也会播放带有FLV或(首选)F4V后缀的MP4文件。 | YouTube和其他媒体网站 |
3、Adaptive Streaming Protocols
许多传输通道(例如移动数据网络)提供随时间变化的带宽或吞吐量。已经发展了四种方法来通过此类通道发送音频流。
最简单的方法是使用所有预期的网络条件下都支持的比特率。这可以通过在流初始化期间测量网络带宽来确定,或者可以使用通过操作经验而已知的比特率值。
如果音频信号在流传输时被编码,则另一种方法是调整编码器的比特率,以匹配未来时间间隔内可用比特率的估计。该时间间隔可能从单个音频帧到几秒钟不等,具体取决于网络和所采用的估计技术。
对于存储为服务器上的编码文件或比特流的内容,已经开发了两种改变比特率的技术。
最常见的方法是流切换,它使用文件的多个存储版本,每个版本以不同的比特率进行编码。进行可用带宽的估计,并发送最高比特率不超过该估计的版本。通常,带宽估计和流每隔几秒钟更新一次。
使用流切换时,必须协调流和解码器的操作,以确保流之间的过渡不会导致明显的瞬变。 Fraunhofer可以提供建议和软件以确保这一点。
已经开发了几种用于流切换的专有协议,例如Apple的HTTP Live Streaming8 9 10,Adobe的Dynamic Streaming和Microsoft的Smooth Streaming。 MPEG DASH项目11正在标准化类似的协议。所有这些协议在操作上都相似,主要区别在于HTTP实时流将音频数据封装在MPEG-2传输流中,而其他协议则使用MPEG-4文件格式。 DASH规范将同时支持这两个选项。
编解码器还可以使用另一种技术,其中包括细粒度的可伸缩性功能,例如HD-AAC。因为HD-AAC的增强层是以特殊的位片方式编码的,所以服务器可以非常有效地删除部分位流,以在服务文件时连续改变位速率。
4、 AAC Tools, Audio Object Types, Profiles, and Levels
MPEG-4标准包括AAC的几种版本,例如AAC-LC和HE-AAC,低延迟版本AAC-LD和AAC-ELD,以及其他编解码器,例如语音编解码器CELP。 该标准定义了工具,音频对象类型和配置文件的层次结构,以指定这些编解码器。
尽管MPEG-4提供了多个配置文件来指定这些编解码器的有用包,但是指定编解码器的主要方法是通过其使用的工具的“音频对象类型”编号。 表2列出了最流行的MPEG-4音频对象类型。
| AOT ID | Audio Object Type |
|---|---|
| AAC-LC | 2 |
| SBR | 5 |
| PS | 29 |
| AAC-LD | 23 |
| AAC-ELD | 39 |
| MPEG Surround | 30 |
| SLS (HD-AAC) | 37 |
| SLS (no core) | 38 |
一些公司在其AAC的实现中使用了商标名称,如表3所示。所有名称都引用相同的MPEG编解码器,并且可以互操作。 HE-AAC在内部是SBR(频谱带复制)和AAC-LC音频对象类型的组合,而HE ACC v2是这两者与PS(参数立体声)音频对象类型的组合。
最后,许多配置文件包括级别定义以指定解码器的最大性能。 表4中显示了一个用于HE-AAC v2的级别。级别定义可能具有复杂的限制,如表中级别3和4的24/48条目所指出的。要理解这一点,必须详细参考标准12。
5、The AudioSpecificConfig() Structure
在MPEG-4音频的传输或存储中,通常必须在AudioSpecificConfig数据结构中指定必须解码的音频对象类型,以及诸如采样率,帧长13和音频通道安排之类的基本音频参数。 ASC允许在不解析AAC比特流的情况下理解这些参数,并且在编解码器协商期间(例如对于SIP或SDP设置)很有用。
MPEG-2没有指定ASC,因此ADIF和ADTS格式的固定帧长为1024个样本,实际上只有音频对象类型2。
ASC没有定义为固定字段结构,而是通过伪代码描述。 ASC由两部分组成,通用部分包含大多数MPEG-4音频对象类型所共有的信息,第二部分包含特定于音频对象类型的信息(例如帧长)。 对于AAC-LC和HE-AAC,第二部分在标准中称为GASpecificConfig。
如果通道配置字段的值为零,则GASpecificConfig或GASC包含程序配置元素(PCE)结构14。 它的主要功能是指定比特流中音频通道的数量和排列。 给出了元素实例标签的列表(请参阅原始数据块或访问单元(有效负载或音频比特流)),该列表从中央前置通道(如果有)开始,然后向外延伸至其余前置通道,然后是侧通道,然后是 后声道,最后是任何后置中央声道,按照它们在收听者的播放配置中的排列顺序。
6、 Raw Data Blocks or Access Units (the Payload or Audio Bitstream)
每种MPEG-4传输或存储格式最终都包含原始数据块(MPEG-2术语)或访问单元(MPEG-4),其中包含音频编码器为音频帧生成的实际比特流。比特流以灵活的方式分为代表不同音频通道的部分。例如,在单个通道元素(SCE)中承载单个音频通道的数据。单声道比特流的访问单元包括: The ID code for SCE An instance number (0) The AAC compressed audio data for the frame The ID for end of a frame – TERM
对于立体声比特流,通道对元素(CPE)允许将两个通道的数据进行组合,以便可以传递联合编码信息。 5.1多声道比特流通常包含用于中央声道的SCE,用于前后立体声对的两个CPE,以及用于LFE声道的LFE元素。由于可以根据帧长度中音频样本的数量来计算音频帧的数据长度,因此无需进一步的同步信息就可以解析数据。
访问单元可能还包含PCE元素(请参阅AudioSpecificConfig()结构),填充元素(FIL)(用于填充比特流,以保持瞬时比特率)以及数据流元素(DSE),用于用户数据和特定于DVB的元数据。 FIL元素被AAC-LC解码器丢弃,还用于包含HE-AAC解码器使用的SBR数据,用于响度归一化和动态范围控制的元数据,以及用于MPEG Surround编码的隐藏空间位流
实际中不使用专门的元素,耦合通道元素(CCE)
7、Implicit versus Explicit Signaling
对原始AAC标准(例如HE-AAC)的扩展被设计为以兼容的方式进行传输,因此较早的解码器将忽略额外的比特流元素。 当在仅支持该标准较早版本的解码器上播放HE AAC流或文件时,由于不支持SBR,由HE-AAC中的SBR技术再现的信号的最高八度会丢失。 当在HE-AAC或AAC-LC解码器上播放HE-AAC v2流或文件时,由于立体声图像是通过HE-AAC v2中的Parametric Stereo技术再现的,因此该信号以单声道形式再现。 如下表所示:
可以通过三种方式在传输或存储流中用信号发送HE-AAC。一种是什么都不做,而是依靠更新的解码器来检测AAC基本比特流中的额外SBR信息。这被称为隐式信令,并且是不包含音频特定配置数据结构的传输格式(例如ADTS)唯一可能的方法。
对于包含ASC结构的格式,可以使用其他两个选项。一种是从AAC-LC的描述符开始ASC,该描述符将由旧式解码器解释为有效ASC,并停止解析ASC结构。具有HE-AAC功能的解码器将继续解析ASC,并查看SBR数据的描述符。这称为显式向后兼容信令,建议与MPEG-4文件格式一起使用。它只能与ASC大小已知的格式一起使用,例如MPEG-4 File Format,因此不能与LATM / LOAS一起使用。
对于LATM / LOAS,建议使用第三个选项:将HE-AAC指定为ASC中的第一个描述符,然后是AAC-LC核心的描述符。由于看到的第一个描述符是针对HE-AAC的,因此传统解码器将看到未知的音频对象类型,并且不会进一步解析或播放流。这被称为分层信令。
8、 Bitstream Diagrams of Common Formats
为了帮助理解ADTS,ADIF和LATM / LOAS格式的结构,下面给出了显示其基本结构的图表。 此简化的介绍不包括MPEG-4标准中定义的格式的所有详细信息或特殊情况。