在嵌入式、海思、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
- 在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性
- 音频aac编码的错误
- 音频AAC编码的RTMP直播
- 音频AAC编码的RTMP直播
- 音频AAC编码的RTMP直播
- 优于AAC的音频编码格式opus
- [推荐] 基于ARM平台优化的 AAC, HE-AAC, HE-AAC V2 音频编码器解码器
- 海思arm平台AAC音频转码cpu占用高、效率低的问题解决
- Android PCM音频的采集和编码成AAC
- 通过Filter进行统一编码的实现
- AAC音频编码格式
- AAC音频编码规格
- android AAC音频编码
- 图像压缩编码的必要性
- PCM音频采样数据编码为AAC的压缩编码数据
- 在嵌入式系统arm中R15和pc的关系
- 最简单的基于FFMPEG的音频编码器(PCM编码为AAC)
- 最简单的基于FFMPEG的音频编码器(PCM编码为AAC)
- Guava学习——Range类
- Android 组件学习笔记(activity跳转,接口实现的点击事件)
- 2.数据抽象,提取关键点
- 什么是 XML?XML 的设计宗旨是用来传输和存储数据,其焦点是数据的内容。
- The Response of LTI systems to complex Exponential Signals
- 在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性
- js Date对象的深入理解
- #define中宏定义中的空格
- Common Subexpression Elimination UVA
- java--正则表达式
- 取整函数的性质
- Python学习(十八)——list tuple namedtuple
- 对象的notify方法的含义和对象锁释放的三种情况
- Tomcat部署web项目,如何直接通过域名访问,不加项目名称