如何在Android系統上使用FAAC處理AAC音訊?


AAC(進階音訊編碼, Advanced Audio Coding)被許多人認為是目前音訊有損壓縮品質最好的格式。Android SDK已有內建AAC的編碼與解碼器,如果不想要用Android提供的AAC編碼器的話,也可以使用FAAC來達成。

編譯FAAC For Android

編譯環境:Linux Mint 17 MATE

取得FAAC

FAAC的原始碼可以直接在FAAC的SourceForge上取得:

http://sourceforge.net/projects/faac/

加入JNI支援至Android專案

在編譯FAAC For Android時,會使用到JNI,所以要讓Android專案能支援JNI。如果您還不知道怎麼樣加入JNIAndroid專案中,可以參考這篇文章:

https://magiclen.org/android-jni/

如何在Android系統上使用FAAC處理AAC音訊?

FAAC原始碼目錄放置於Android專案下

把剛才下載下來的FAAC原始碼目錄放置在Android的專案下,為了要讓.mk設定檔能直接套用,需確定目錄名稱為「faac」。

如何在Android系統上使用FAAC處理AAC音訊?

加入Android.mk和Application.mk至JNI目錄

在此提供筆者編譯FAAC時所使用的Android.mk和Application.mk配置檔案。下載網址:

//file.magiclen.org/index.php?file=666161632d6d6b2e726172

使用ndk-build來編譯

將終端機下的工作目錄移動到Android專案的目錄下,執行以下指令使用Android NDK開始編譯FAAC

ndk-build

如何在Android系統上使用FAAC處理AAC音訊?

編譯成功的話可以看到以下畫面:

如何在Android系統上使用FAAC處理AAC音訊?

使用FAAC For Android

編譯出FAAC的.so檔之後,要如何在Android SDK下使用呢?因為FAAC官方並未提供任何JNI的支援,所以這部份需要自行實作。要在JNI內使用FAAC函式庫的話,可以引入(include)faac目錄下,「include」目錄裡的「faac.h」檔案。使用方法可以直接參考「faac.h」檔案裡的註解和「faaccfg.h」檔案裡的定義。

如何在Android系統上使用FAAC處理AAC音訊?

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章