海思arm平台AAC音频转码cpu占用高、效率低的问题解决

问题背景

目前市面上的大部分IPC摄像机音频输出基本都是G711、G726编码格式,而在类似于《基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控》这种业务中,都是在类似于EasyNVR这样的适配服务中进行音频的转码,也有在类似于《EasyDarwin开源流媒体云平台支持EasyCamera摄像机、EasyCamera手机直播监控、EasyNVR等多终端接入》这种arm设备中需要进行音频转码AAC的需求情况,我们发现在类似于hisi海思芯片的大部分ARM系统中,对浮点运算的支持都不是很好,效率非常低,导致在ARM设备中直接将PCM类型音频转成AAC时,效率非常低,转码服务进程会抢占主服务的CPU资源,导致整个相机的其它工作进程不稳定!

解决方案:EasyAACEncoder

开源EasyAACEncoder 是EasyDarwin开源流媒体服务团队整理、开发的一款音频转码到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

Author:Leo,Kim,Wellsen

Copyright © EasyDarwin.org 2012-2017

EasyDarwin

posted @ 2017-07-22 16:47  Babosa  阅读(502)  评论(0编辑  收藏  举报