问题背景

目前市面上的大部分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

海思arm平台AAC音频转码cpu占用高、效率低的问题解决的更多相关文章

  1. EasyAACEncoder海思/ARM平台优化G711、G726转AAC的CPU占用高问题

    本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/75645378 引言 目前EasyDarwin ...

  2. 海思HI35xx平台软件开发快速入门之H264解码实例学习

    ref :https://blog.csdn.net/wytzsjzly/article/details/82500277   前言 H264视频编码技术诞生于2003年,至今已有十余载,技术相当成熟 ...

  3. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  4. 在海思hisiv100nptl平台上交叉编译并安装SRS

    ./configure --with-arm-ubuntu12 && make 须要安装: apt-get installgcc-arm-linux-gnueabi     ,但hi3 ...

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

    前言 最近来到深圳,跟许多做硬件的小伙伴聊安防.聊互联网.聊技术,受益颇多,其中聊到一点,大家一直都在想,互联网发展如此迅猛,为啥大部分的摄像机还是采用的传统G.726/G.711的音频编码格式呢,如 ...

  6. OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台

    前言   移植opencv到海思平台,opencv支持对视频进行解码,需要对应的ffmpeg支持.   Ffmpeg的移植   Ffmpeg的移植请参考之前的文章:<FFmpeg开发笔记(十): ...

  7. RTSPClient工具EasyRTSPClient支持H.265,支持海思等各种芯片平台

    EasyRTSPClient是EasyDarwin开源流媒体团队开发.提供的一套非常稳定.易用.支持重连的RTSPClient工具,接口调用非常简单,再也不用像调用live555那样处理整个RTSP ...

  8. 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...

  9. 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发

    1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...

随机推荐

  1. 20145216史婧瑶《Java程序设计》第7周学习总结

    20145216 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1 认识时间与日期 就目前来说,即使标注为GMT(无论是文件说明,或者是API的日期时间 ...

  2. C++ 程序崩溃时生成Dump文件

    #include <DbgHelp.h> //生产DUMP文件 int GenerateMiniDump(HANDLE hFile, PEXCEPTION_POINTERS pExcept ...

  3. LeetCode——Decode String

    Question Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string ...

  4. 02_MySQL DQL_条件查询

    #查询2:条件查询 /*语法: select 查询列表 from 表名 where 筛选条件; 执行顺序:找到表,逐行筛选,选出行的相关列呈现 分类: 1)按条件表达式筛选 条件运算符:> &l ...

  5. PHP Fatal error: Call to undefined function imagecreatetruecolor()

    是因为没有安装gd apt-get install libgd2-xpm-dev* apt-get install php5-gd

  6. C# 一些常用的字符串扩展方法

    以下可能是常用的.net扩展方法,记录下 EString.cs文件 /// <summary> /// 扩展字符串类 /// </summary> public static ...

  7. linux与window的\r与\n

    应用程序 void niuniu(void) { char buf[16]; char *p[6]; int i; led_init(); uart_init(); while(1) { puts(& ...

  8. 搭建selenium + Python环境的总结:

    安装Python+Selenium 写博客是一个不错的选择,首先,是担心自己忘掉,其次,可以供大家做一个参考: 其实,这是自己第一次搭建Python环境(之前用了一周的Idle),还是比较容易的吧: ...

  9. Java中子类对象赋值给父类变量

    1. 在Java中将一个字类对象赋值给父类变量是合法的,这也是实现多态(即方法的动态分派)的前提条件之一. 2. 在Java中父类赋值同样也适用于数组.可以将一个子类数组赋值给一个父类数组变量.但可能 ...

  10. Spring Boot总结

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...