在嵌入式、海思、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) */
};

獲取更多信息

郵件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM