LATM格式

来源:互联网 发布:个人域名备案企业网站 编辑:程序博客网 时间:2024/06/05 12:12


转自http://blog.csdn.net/markman101/article/details/6616170/

LATM 的全称为“Low-overhead MPEG-4 Audio TransportMultiplex”(低开销音频传输复用),
是MPEG-4 AAC制定的一种高效率的码流传输方式,MPEG-2 TS 流也采用LATM 
作为AAC 音频码流的封装格式之 LATM格式也
以帧为单位,主要由AudioSpecificConfig(音频特定配置单元)与音频负载组成。
AudioSpecificConfig 描述了一个LATM 帧的信息,音频负载主要由PayloadLengthInfo(负载长度信息)和PayloadMux(负载净荷)组成
AudioSpecificConfig 信息可以是带内传,也可以是带外传。所谓带内传,就是指每一个LATM 帧,都含有一个AudioSpecificConfig 信息;
而带外传,则每一个LATM帧都不含有AudioSpecificConfig 信息,而通过其他方式把AudioSpecificConfig信息发送到解码端,
由于AudioSpecificConfig 信息一般是不变的,所以只需发送一次即可。由此可见,
AudioSpecificConfig 信息采用带内传输可适应音频编码信息不断变化的情况,
而采用带外传输,可以节省音频传输码率。带内或带外传,由muxconfigPresent 标志位决定。例如流媒体应用中,
muxconfigPresent 可设置为0,这样LATM帧中将不含有AudioSpecificConfig 信息,LATM帧通过RTP包发送出去,
AudioSpecificConfig 可通过SDP文件一次性传送到解码端。

AudioSpecificConfig主要参数

numSubFrames 子帧的数目

numProgram 复用的节目数

numLayer 复用的层数

frameLengthType 负载的帧长度类型,包括固定长度与可变长度

audioObjectType音频对象类型

samplingFrequency采样率

channelConfiguration声道配置


音频负载由若干子帧组成,每个子帧由PayloadLengthInfo和PayloadMux组成
与ADTS帧净荷一样,音频负载主要包含原始帧数据。

AAC打包成TS流通常有两种方式,分别是先打包成ADTS或LATM。ADTS的每一帧都有个帧头,在
每个帧头信息都一样的状况下,会有很大的冗余。LATM格式具有很大的灵活性,每帧的音频配置单元既可以带内传输,
又可以带外传输。正因为如此,LATM不仅适用于流传输还可以用于RTP传输,
RTP传输时,若音频数据配置信息是保持不变,可以
先通过SDP会话先传输StreamMuxConfig(AudioSpecificConfig)信息,
由于LATM流由一个包含了一个或多个音频帧的audioMuxElements(音频复用元素)序列组成。
一个完整或部分完整的audioMuxElement可直接映射到一个RTP负载上。

下面是一个audoMuxEmlemt

AudioMuxElement(muxConfigPresent)
{
if (muxConfigPresent) //muxconfigPresent 可设置为0,这样LATM帧中将不含有AudioSpecificConfig 信息,LATM帧通过RTP包发送出去,
{
useSameStreamMux;
if (!useSameStreamMux)
StreamMuxConfig(); 

}
if (audioMuxVersionA == 0)

for (i = 0; i <= numSubFrames; i++)

PayloadLengthInfo();
PayloadMux();
}
}
}

可以很简单的把ADTS帧转换为LATM帧,根据ADTS头的信息,生成StreamMuxConfig
将ADTS中的原始帧提取出来,前面加上PayloadLengthInfo做为LATM的音频帧
按照上述格式打包生成AudioMuxElement,作为RTP的负载传输.


四、CMMB中的LATM

当CMMB中音频压缩标准为AAC时,默认采用LATM封装。StreamMuxConfig采用带外传输
StreamMuxConifg中的若干默认参数如下:audioMuxVersion:0标志流语法版本号为0,
allStreamsSameTimeFraming标志复用到PayLoadMux()中的所有负载共享一个共同的时基音频子帧.

audioObjectType:2 AAC-LC

freameLengthType:0 帧长度是可变的

latmBufferFullness:0xFF 码率可变的码流



原创粉丝点击