在嵌入式、海思、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 ...
随机推荐
- POJ 2057 The Lost House [树状DP]
题意:一只蜗牛将壳忘在了一棵树的某一个末结点(叶子)上.它想找回自己的壳,但忘记是丢在哪个结点上了,只好从树根开始网上爬,一个结点一个结点地找.在一些结点上居住着毛毛虫,它们会告诉蜗牛该结点以及它的子 ...
- Elasticsearch本地环境安装和常用操作
本篇文章首发于我的头条号Elasticsearch本地环境安装和常用操作,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干 ...
- SecureCRT字体大小随屏幕调节设置
- cmd 中键入netstat,net等出现不是内部或外部命令,也不是可运行的程序或批处理文件
这是环境变量的问题,查下环境变量中path项是否包含%SystemRoot%\system32;再查下%SystemRoot%\system32有没有netstat.exe这个文件
- 写在php设计模式前
在学校写代码的时候,看过许多代码,跟着学长学过一段时间.找工作的时候由于种种原因,从事于本专业, 最近重拾php,充充电,找个好工作. 以前项目中设计模式用的比较多的也就是单例模式,看书中回顾写过的代 ...
- ADO.NET访问Access(文本数据库)数据操作(CRUD)
1,ADO.NET访问Access(文本数据库)数据操作(CRUD) 2,DatabaseDesign 文本数据库Northwind.mdb 3,/App_Code 3.1,/App_Code/DBC ...
- 转:使用Fabric自动化你的任务
转:http://www.cnblogs.com/holbrook/archive/2012/03/05/2380398.html fabric是什么? Fabric是一个Python库,可以通过SS ...
- 2015年度新增开源软件排名TOP100
2015年度新增开源软件排名TOP100 本榜单包含2015年开源中国新收录的软件中,根据软件本身的关注度.活跃程度进行排名前100名的软件.从这份榜单中或许可以了解到最新业界的趋势. 1.Switc ...
- 使用Unitils测试DAO层
Spring 的测试框架为我们提供一个强大的测试环境,解决日常单元测试中遇到的大部分测试难题:如运行多个测试用例和测试方法时,Spring上下文只需创建一次:数据库现场不受破坏:方便手工指定Sprin ...
- Java中对象、对象引用、堆、栈、值传递以及引用传递的详解
Java中对象.对象引用.堆.栈.值传递以及引用传递的详解 1.对象和对象引用的差别: (1).对象: 万物皆对象.对象是类的实例. 在Java中new是用来在堆上创建对象用的. 一个对象能够被多个引 ...