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

来源:互联网 发布:kbengine java 编辑:程序博客网 时间:2024/05/23 15:42

前言

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

阅读全文
0 0