在嵌入式、海思、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

在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性的更多相关文章
- EasyAACEncoder海思/ARM平台优化G711、G726转AAC的CPU占用高问题
本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/75645378 引言 目前EasyDarwin ...
- 海思arm平台AAC音频转码cpu占用高、效率低的问题解决
问题背景 目前市面上的大部分IPC摄像机音频输出基本都是G711.G726编码格式,而在类似于<基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控>这种业务中,都是 ...
- 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...
- 【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
1.1 什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...
- 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发
1.1 什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...
- [转帖]华为海思Hi1620芯片发布在即 7nm制程ARM架构最高可达3.0GHz
华为海思Hi1620芯片发布在即 7nm制程ARM架构最高可达3.0GHz https://www.cnbeta.com/articles/tech/850561.htm 中电科旗下的普华软件 支持国 ...
- 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
- 海思uboot启动流程详细分析(二)
1. 第二个start.S 从start_armboot开始,在startup.c中有包含#include <config.h> 在config.h中: /* Automatically ...
- 海思3519A 移植 Qt 5.5.1
源码下载 网址:qt-everywhere-opensource-src-5.5.1.tar.gz 配置生成MakeFile 文件 解压源码包,在源码包路径下生成配置 MakeFile : ./con ...
随机推荐
- eclipse主题样式
Eclipse Color Themeshttp://eclipsecolorthemes.org/ Get it Download from Eclipse Marketplace Install ...
- js动态设置根元素的rem方案
方案需求: rem 单位在做移动端的h5开发的时候是最经常使用的单位.为解决自适应的问题,我们需要动态的给文档的根节点添加font-size 值. 使用mediaquery 可以解决这个问题,但是每一 ...
- layui如何使用内部jQuery?
遇到问题情境: 由于Layui部分内置模块依赖jQuery,所以没有单独引入jQuery,但是在使用$常规写法获取dom元素时,提示未定义 出现问题的原因: 由于Layui部分内置模块依赖jQuery ...
- ActiveMQ 使用spring模板 发布消息过程分析
convertAndSend()方法中获得dstination,即发送信息的目的地dstination可以在spring的配置文件中指定自定义的,在JmsTemplate类中,pubSubDomain ...
- ARM Linux系统调用的原理
转载自:http://blog.csdn.net/hongjiujing/article/details/6831192 ARM Linux系统调用的原理 操作系统为在用户态运行的进程与硬件设备进行交 ...
- 关于Android TaskAffinity的那些事儿
正常情况下,如果应用已经启动,并将应用切到后台,在通知栏中调起页面时,该应用的Task首先会被调起,然后会将我们的Activity显示在这个Task的顶端.手机百度的通知栏里面有一个快速搜索栏,无论什 ...
- php正则表达式取子字符串及替换
最近在学习如何用php编写cms,想把文章中的第一个图片提取出来当做缩略图显示到前面,想到的方法就是把文章内容作为一个大字符串,然后用正则表达式找出匹配出第一次出现<img src=" ...
- GLSL逐像素光照 【转】
转载:http://blog.csdn.net/hgl868/article/details/7872414 逐像素的方向光(Directional Light per Pixel) 这一节将把前面的 ...
- js 动态获取对象多级属性
var obj={ f1:{f2:{f3:2}} } var key="f1.f2.f3" var value=eval("obj."+key); consol ...
- Spring boot Security Disable security
When I use security.basic.enabled=false to disable security on a Spring Boot project that has the fo ...