1. 程式人生 > >海思arm平臺AAC音訊轉碼cpu佔用高、效率低的問題解決

海思arm平臺AAC音訊轉碼cpu佔用高、效率低的問題解決

問題背景

目前市面上的大部分IPC攝像機音訊輸出基本都是G711、G726編碼格式,而在類似於《基於EasyNVR實現RTSP/Onvif監控攝像頭Web無外掛化直播監控》這種業務中,都是在類似於EasyNVR這樣的適配服務中進行音訊的轉碼,也有在類似於《EasyDarwin開源流媒體雲平臺支援EasyCamera攝像機、EasyCamera手機直播監控、EasyNVR等多終端接入》這種arm裝置中需要進行音訊轉碼AAC的需求情況,我們發現在類似於hisi海思晶片的大部分ARM系統中,對浮點運算的支援都不是很好,效率非常低,導致在ARM裝置中直接將PCM型別音訊轉成AAC時,效率非常低,轉碼服務程序會搶佔主服務的CPU資源,導致整個相機的其它工作程序不穩定!

解決方案:EasyAACEncoder

開源EasyAACEncoder 是EasyDarwin開源流媒體服務團隊整理、開發的一款音訊轉碼到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音訊轉碼需求!

專案地址

呼叫過程

特殊說明

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) */
};

獲取更多資訊

Author:Leo,Kim,Wellsen

Copyright © EasyDarwin.org 2012-2017

EasyDarwin