音频AAC编码与RV1126的AENC模块的讲解
音频编码压缩是为了减少音频数据量,便于网络传输。以PCM数据为例,其原始数据量巨大,如48000采样率、16bit采样深度、双声道的数据量约为1.46Mbps,一分钟的数据量可达87.6M。为减轻网络负载,需对音频进行编码压缩,常见格式有MP3、AAC、OGG等。AAC编码因其高质量和高压缩比(1:18)而被广泛使用。AAC编码的音频帧包含1024个采样值,封装格式有ADIF和ADTS两种,其中A
一.音频编码的原理
1.AAC编码的基本概念
AAC(Advanced Audio Coding)是一种高级音频编码格式,旨在提供比MP3更高的音质和更低的比特率。AAC是MPEG-2和MPEG-4标准的一部分,广泛应用于音乐、视频流媒体和广播等领域
音频为什么要进行编码压缩?
我们就以PCM原始数据为例,假设这个PCM数据采样率为:48000、采样深度:16bit、声道数:2。对应的码率是:48000 * 16bit * 2 = 1536000bps ~=1.46M,若传输一分钟那就是1.46M * 60S~ = 87.6M。这个数据量是非常大,若在网络传输上这个音频的数据量很容易造成网络的负载压力。所以此时我们就需要对音频进行编码压缩,音频编码压缩格式分很多种,比方说:MP3、AAC、OGG格式。
我们的课程重点来说AAC编码格式,因为AAC编码在网络传输中质量最好,并且AAC的压缩比高达1:18,是所有音频编码技术中压缩比最高。
2.AAC编码的特点
每个AAC音频帧包含了多个音频采样的压缩数据,AAC的一个音频帧包含1024个采样值。由于原始数据块它是以帧的形式存在,我们称之为原始帧。

在AAC中一般有两种方式来封装,一种是ADIF,另外一种是ADTS。
1.ADIF格式
音频数据交换格式,这种格式必须在定义的音频数据流进行处理,基本上用于存储磁盘文件中
2.ADTS格式
音频数据传输流,这种格式是最常用的格式。
特点是会同步字的比特流,并且允许在音频数据流任意帧解码。换言之,就是它的每一帧都有信息头,一个是AAC原始数据长度是可变,对原始帧加上ADTS头进行封装就生成ADTS帧。
AAC的每一帧数据由ADTS Header和AAC Audio Data组成,其中ADTS Header占有7个字节-9个字节。
ADTS Header由两部分组成分别是:固定头部信息(adts_fixed_header)和可变头信息(adts_variable_header),固定头信息指的是数据每一帧都是相同的,它主要定义了音频的采样率、声道数、帧长度等信息;可变头信息则主要描述帧和帧之间的可变。下面是adts帧的结构

4.adts_fixed_header的参数:

图二:采样率下标和采样率关系

5.adts_variable_header的参数:

二.RV1126的AENC模块的讲解
RV1126的AENC模块的介绍
RV1126的AENC模块是音频编码模块,主要是对AI模块进来的数据进行音频编码压缩处理,并输出对应的音频压缩码流,下面是AENC模块在RV1126里面和AI模块的关系。

RV1126的AENC模块参数
设置AENC模块的是AENC_CHN_ATTR_S结构体,下面我们重点看看这个结构体属性的具体定义:

1.enCodecType:音频编码协议类型,下面是AENC支持的音频编码格式

2.u32Bitrate:音频编码比特率,音频编码每秒传输的数据量。
AAC编码协议推荐使用64kpbs(64000bps);
G711A、G711U编码协议推荐使用64kps(64000bps);
G726推荐使用32kpbs(32000bps)。
3. u32Quality: 音频编码质量,默认是1
4.stAencAAC、stAencMp2、stAencG711A、stAencG711U、stAencG726:这几个结构体是不同的音频编码器的专门协议属性结构体
4.1.stAencAAC:它是AAC编码协议属性

u32Channels:编码通道数
u32SampleRate:音频采样率,AAC的采样率范围是7350-96000
4.2.stAencMp2:它是MP2编码协议属性

u32Channels:编码通道数
u32SampleRate:音频采样率
三.小结
1.AAC
定义:AAC(Advanced Audio Coding)是一种高级音频编码格式,AAC是MPEG-2和MPEG-4标准的一部分
应用:广泛应用于音乐、视频流媒体和广播等领域
特点:AAC的一个音频帧包含1024个采样值
优点:AAC编码在网络传输中质量最好,并且AAC的压缩比高达1:18,是所有音频编码技术中压缩比最高。
封装方式:一种是ADIF,另外一种是ADTS。
ADIF:音频数据交换格式,这种格式必须在定义的音频数据流进行处理,基本上用于存储磁盘文件中
ADTS:音频数据传输流,这种格式是最常用的格式。
特点:会同步字的比特流,并且允许在音频数据流任意帧解码。
换言之,就是它的每一帧都有信息头,一个是AAC原始数据长度是可变,对原始帧加上ADTS头进行封装就生成ADTS帧。
AAC的每一帧数据由ADTS Header和AAC Audio Data组成,其中ADTS Header占有7个字节-9个字节。
ADTS Heade组成:固定头部信息和可变头信息
固定头信息指的是数据每一帧都是相同的,它主要定义了音频的采样率、声道数、帧长度等信息。
可变头信息则主要描述帧和帧之间的可变
2.RV1126AENC模块
定义:RV1126的AENC模块是音频编码模块
功能:对AI模块进来的数据进行音频编码压缩处理,并输出对应的音频压缩码流
RV1126的AENC模块参数:
设置AENC模块的AENC_CHN_ATTR_S结构体:
enCodecType:音频编码协议类型,我们使用AAC
u32Bitrate:音频编码比特率,音频编码每秒传输的数据量,AAC编码协议推荐使用64kpbs(64000bps);
u32Quality: 音频编码质量,默认是1
stAencAAC:它是AAC编码协议属性
参数:
u32Channels:编码通道数
u32SampleRate:音频采样率,AAC的采样率范围是7350-96000
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)