在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性
前言
最近来到深圳,跟许多做硬件的小伙伴聊安防、聊互联网、聊技术,受益颇多,其中聊到一点,大家一直都在想,互联网发展如此迅猛,为啥大部分的摄像机还是采用的传统G.726/G.711的音频编码格式呢,如果能直接输出AAC格式的音频,再配合H.264+AAC,基本上编码数据就不用再做处理,就可以直接做协议转换的输出了,输出:RTSP、RTMP、HLS、MP4、FLV各种协议和封装格式,而如果还是传统安防的音频格式,不但音频数据要做转码,时间戳也要重新矫对,非常不便;
为什么呢?
目前市面上的大部分摄像机采用的是海思方案,可能,只能说是可能由于版权/版权费的原因,海思的芯片音频硬编码一直都没有加入AAC编码格式,还是继续沿用传统的PCMA/PCMU/G.726这些格式;
那怎么办?
可喜的是音频转码的复杂度不像视频转码复杂度这么高,直接采用软解码+软编码的方式即可,但是通常的浮点运算在海思这样的arm芯片中又没法像x86上那样高效,非常占用CPU,所以必须改变方式为定点计算的方法,于是我们开发了一套EasyAACEncoder arm版本:
解决方案:EasyAACEncoder
开源EasyAACEncoder 是一款音频转码到AAC的工具库,目前支持G711a/G711u/G726/PCM等音频格式的转码,跨平台,支持Windows(32&64)/Linux(32&64)各平台,AAC的转码是基于知名的faac进行的,能够非常稳定、高效地在x86平台工作,而在arm平台上,我们根据特定的ARM平台定制整理出了一套商用版本的音频转码EasyAACEncoder SDK,目前海思(hisiv100、hisiv200、hisiv300、hisiv400)全系列均已支持,CPU占用率极低,能非常好地满足ARM平台的AAC音频转码需求!
项目地址
项目地址:
https://github.com/EasyDarwin/EasyAACEncoder,
x86开源版本:
https://github.com/EasyDarwin/EasyAACEncoder/tree/master/OpenSourceVersion
arm平台定制优化版本(需提供工具链):
https://github.com/EasyDarwin/EasyAACEncoder/tree/master/CommercializedVersion
调用过程
特殊说明
EasyAACEncoder目前支持的音视频格式:
/* Audio Codec */
enum Law
{
Law_ULaw = 0, /**< U law */
Law_ALaw = 1, /**< A law */
Law_PCM16 = 2, /**< 16 bit uniform PCM values. 原始 pcm 数据 */
Law_G726 = 3 /**< G726 */
};
/* Rate Bits */
enum Rate
{
Rate16kBits=2, /**< 16k bits per second (2 bits per ADPCM sample) */
Rate24kBits=3, /**< 24k bits per second (3 bits per ADPCM sample) */
Rate32kBits=4, /**< 32k bits per second (4 bits per ADPCM sample) */
Rate40kBits=5 /**< 40k bits per second (5 bits per ADPCM sample) */
};
获取更多信息
Copyright © EasyDarwin.org 2012-2017
相关文章
- XMOVE3.0手持终端——软件介绍(一):精简型嵌入式管理系统的菜单实现和任务切换
- 在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性
- 《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳
- 《安富莱嵌入式周报》第271期:2022.06.20--2022.06.26
- 《安富莱嵌入式周报》第269期:2022.06.06--2022.06.12
- 《安富莱嵌入式周报》第224期:2021.08.02--2021.08.08
- 嵌入式linux开发,yasm移植,yasm-1.3.0交叉编译
- 嵌入式linux开发,移植openssl-0.9.8d,安装时报错:POD document had syntax errors at /usr/bin/pod2man line 71.
- 嵌入式linux开发,iconv库的移植,libiconv交叉编译
- 嵌入式linux开发,telnet,telnetd服务移植
- 嵌入式参考网址
- 嵌入式linux开发,在cmake命令中配置交叉编译
- 嵌入式linux开发,RTC(pcf8563)报错:drivers/rtc/hctosys.c: unable to open rtc device (rtc1)