前言
最近來到深圳,跟許多做硬件的小伙伴聊安防、聊互聯網、聊技術,受益頗多,其中聊到一點,大家一直都在想,互聯網發展如此迅猛,為啥大部分的攝像機還是采用的傳統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