在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性

2019-07-13 01:13发布

前言

最近来到深圳,跟许多做硬件的小伙伴聊安防、聊互联网、聊技术,受益颇多,其中聊到一点,大家一直都在想,互联网发展如此迅猛,为啥大部分的摄像机还是采用的传统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) */ };

获取更多信息

邮件:support@easydarwin.org WEB:www.EasyDarwin.org Copyright © EasyDarwin.org 2012-2017 EasyDarwin