AAC高级音频编码技术

一、什么是AAC

        AAC的中文名称是高级音频编码技术,它是基于MPEG-2的一种全新的音频编码技术。随着时代的发展,目前AAC的技术升级到MPEG-4表准。AAC广泛的应用在网络传输、高清录制等领域,而AAC技术的出现就是为了取代之前的MP3格式。

二、为什么需要进行AAC进行音频压缩处理

        一帧普通的PCM数据的比特率是很高的,以采样率48000,双声道、采样深度S16的PCM数据传输,假设视频文件是10分钟,那么视频大小就是100多M,这样的大小在网络传输中是不可取的,引入AAC后原来100多M的音频数据被压缩后只有几M

三、AAC的特点和优势

        1.高压缩率:AAC的压缩比为1:20,远比MP3的1:10高,相同时长的音频大小远远小于MP3大小

        2.音质更好:AAC的音频还原度很高,音质相比于其他格式更加的优秀

        3.更高的解码效率:解码播放AAC音频文件时,所占用的资源更少,解码时CPU使用率更低

四、AAC格式详解

        AAC有两种不同的表现形式,一个是ADIF形式,另一种是ADTS形式。

        ADIF形式:可以确认音频数据的开始位置,不能从中间解码,无法随机访问,无法跳播,适合存储在磁盘中

        ADTS形式的AAC文件,可以在任何一帧开始解码,因为ADTS格式的每一帧都有头信息

        4.1ADIF的数据结构

        

        adif_header:adif的头部,一个adif形式的AAC文件只有一个头部

        

        byte_alignment:用于字节对齐

        因为每帧不是固定大小,故只能按照顺序进行解码,也无法跳播或快进快退。除非自己解码遍历整个文件建立每帧位置表。

      4.2ADTS的结构

      

 由上图可知一个ADTS的AAC一帧数据由两个部分组成,ADTS头部和AAC ES,AAC ES是AAC的裸流数据

ADTS Header由两部分组成,一部分是adts_fixed_header,另一部分是adts_variable_header

下面就详细的说一下这两部分。

  1.1adts_fixed_header

        

syncword:固定是0xFFF,代表一个ADTS帧的开始

ID:MPEG标识符,0代表MPEG-4   1代表MPEG-2

layer:默认为0b00(二进制)

protection_absent:表示是否误码校验

profile:表示使用哪个级别的AAC,下面这个表格是profile的索引

Sample Frequence index:代表的时使用采样率下标,通过这个下标找到对应的采样率,如下图

private bit:私有位,编码的时候设置为0,解码的时候忽略这一位

channel configuration:声道数的配置,下面是声道数的配置表格

1单声道
2双声道
3三声道
4四声道
5五声道
6六声道
7八声道

copy:编码的时候设置为0,解码的时候忽略这一位

home:编码的时候设置成0,解码的时候忽略这一位

 1.2adts_varibale_header的表格如下

copyright_identificaion_bit:编码的时候设置为0

copyright_identifiction_start:编码的时候设置为0

aac_frame_length:ADTS帧的长度,包含ADTS头部和AAC es数据的长度,如果包含crc校验的话,ADTS头部的长度是9字节,不包含crc校验的话ADTS头部的长度就是7字节,所以aac_frame_length = (protection_absent == 0 ? 9:7) + audio_data_length

adts_buffer_fulness:固定为0x7FF,这个标识符是指可变码流

number_of_raw_data_blocks_in_frame:表示当前的帧有number_of_raw_data_blocks_in_frame+1个原始帧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值