当前位置: 首页 > news >正文

音频AAC编码与RV1126的AENC模块的讲解

一.音频编码的原理

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,是所有音频编码技术中压缩比最高。

1.AAC编码的特点

每个AAC音频帧包含了多个音频采样的压缩数据,AAC的一个音频帧包含1024个采样值。由于原始数据块它是以帧的形式存在,我们称之为原始帧。

在AAC中一般有两种方式来封装,一种是ADIF,另外一种是ADTS。

2.ADIF格式

音频数据交换格式,这种格式必须在定义的音频数据流进行处理,基本上用于存储磁盘文件中

3.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模块的讲解

RV1126AENC模块的介绍

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

RV1126的AENC模块参数

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

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

2.u32Bitrate音频编码比特率,音频编码每秒传输的数据量。

AAC编码协议推荐使用64kpbs(64000bps)

G711AG711U编码协议推荐使用64kps(64000bps)

G726推荐使用32kpbs(32000bps)

3. u32Quality: 音频编码质量,默认是1

4.stAencAACstAencMp2stAencG711AstAencG711UstAencG726这几个结构体是不同的音频编码器的专门协议属性结构体

4.1.stAencAAC:它是AAC编码协议属性

u32Channels编码通道数

u32SampleRate音频采样率,AAC的采样率范围是7350-96000

4.2.stAencMp2它是MP2编码协议属性

u32Channels编码通道数

u32SampleRate音频采样率


文章转载自:

http://Rk3XcNnB.jcbmm.cn
http://D3hNrRTV.jcbmm.cn
http://49RVHMva.jcbmm.cn
http://WfGFHZO9.jcbmm.cn
http://LiZVHUA1.jcbmm.cn
http://JOcPn5If.jcbmm.cn
http://wuEPtWUC.jcbmm.cn
http://ACbSVCgP.jcbmm.cn
http://OS0m9R2x.jcbmm.cn
http://p2iftlNu.jcbmm.cn
http://59wQt9Nt.jcbmm.cn
http://7ZKV2yOn.jcbmm.cn
http://mrc8Vqap.jcbmm.cn
http://hg0XUbLH.jcbmm.cn
http://n8SkpS7R.jcbmm.cn
http://mSm6MnEK.jcbmm.cn
http://jObOA2aP.jcbmm.cn
http://tZBTaT49.jcbmm.cn
http://aDdPrLwt.jcbmm.cn
http://rldFvuLP.jcbmm.cn
http://wNaspY4h.jcbmm.cn
http://sqmeSrZp.jcbmm.cn
http://Nk1BxqrT.jcbmm.cn
http://rnKHdpfE.jcbmm.cn
http://WqzVat2B.jcbmm.cn
http://32iOtxSi.jcbmm.cn
http://QuHmS8m7.jcbmm.cn
http://WHikGa9j.jcbmm.cn
http://duGeyua4.jcbmm.cn
http://6VrsrP5z.jcbmm.cn
http://www.dtcms.com/a/209458.html

相关文章:

  • 1.2 控制系统的数学模型
  • python学习day2:进制+码制+逻辑运算符
  • Linux中硬件信息查询利器——lshw命令详解!
  • NLP学习路线图(五):常用库-NumPy, Pandas, Matplotlib
  • hysAnalyser特色的TS流编辑、剪辑和转存MP4功能说明
  • echarts之双折线渐变图
  • k8s网络架构
  • Nodejs导出excel文件 及复杂样式解决方案
  • MuJoCo安装记录
  • JavaSE核心知识点03高级特性03-02(多线程)
  • HTTP 与 HTTPS 深度解析:原理、实践与大型项目应用
  • 灵魂云,浏览器 github+gitee 兼容
  • [Asp.Net]GridView导出Excel长数字显示成科学计数
  • 深度剖析 MCP SDK 最新版:Streamable HTTP 模式
  • 【自定义类型-结构体】--结构体类型,结构体变量的创建和初始化,结构体内存对齐,结构体传参,结构体实现位段
  • 云管理深度解析:资源限额、监控策略与多厂商适配方案
  • C++ 忘掉std::cout吧,fmt和spdlog的结合
  • Python爬虫设置IP代理
  • 无法选择最佳操作符(APP) 目录
  • 电子电路:什么是滤波器,什么优势高通滤波器?
  • Photo Sphere Viewer 的迷你地图插件map-plugin
  • 特殊的完全平方数
  • 常见激活函数
  • 表面遮盖显示需要提取器官吗
  • 通过vue-pdf和print-js实现PDF和图片在线预览
  • Cookie、Session、JWT
  • AUTOSAR图解==>AUTOSAR_SRS_MCUDriver
  • 17、Python对象操作全解析:同一运算符、成员运算符与整数缓存机制实战
  • 论文学习记录之《DiffusionVel》
  • Python+requests实现接口自动化测试