[最詳細的FAAC1.28交叉編譯過程] AAC算法移植

折騰2個星期,就搞出這個

 

 

因爲是要在hi3531開發板上做一次aac算法的編碼,下面將在移植過程中遇到的坑記錄一下

前提是你係統已經安裝好你的交叉編譯環境和已經下載了faac1.28
官方地址是
http://www.audiocoding.com/index.html

開發環境:Ubantu12.04.2
交叉編譯器:hisiv300-linux-g++,hisiv300-linux-gcc
基本思路就是先將faac1.28編譯成.so和.a庫文件,然後調用faacEncEncode進行編碼

其實別人已經寫了一個 音頻編解碼·實戰篇(1)PCM轉至AAC(AAC編碼)
http://blog.csdn.net/poechant/article/details/7435054#comments
上面這篇文章已經很詳細了,有基礎的指導,但是我在交叉編譯的時候,也遇到不少坑
下面記錄一下,有些命令會和上面這篇不一樣,但是思路都一樣

1.交叉編譯faac1.28
./configure CXX=arm-hisiv300-linux-g++ CC=arm-hisiv300-linux-gcc --prefix=/usr/local/faac --host=arm-linux --with-mp4v2=no
make
(make有錯誤的mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)就是這個,去這個文件把這行註釋掉也可以)
make install
(install 安裝到了/usr/local/lib/裏面)

install安裝好了之後,要注意將/usr/local/lib/ 添加到  /etc/ld.so.conf文件中,並ldconfig使能
建議每次install都用ldconfig使能一下(linux太坑,不知道哪些使能沒使能)


2.編寫應用程序調用faacEncEncode來進行aac編碼
arm-hisiv300-linux-gcc faac.cpp -o faac -L/usr/local/lib -lfaac -I/usr/local/include -lsupc++
正確編譯後,就可以把faac弄到arm開發板上運行了
運行前請將/usr/local/lib/中凡是有libfaac字樣的靜態庫.a或動態庫.so拷貝到開發板的/usr/local/lib/文件中
(有些arm開發板的系統中沒有/etc/ld.so.conf文件,這個時候需要查看一下您的開發板系統的動態鏈接庫地址
echo $LD_LIBRARY_PATH
如果顯示沒有/usr/local/lib/
用下面的指令將/usr/local/lib/添加到動態鏈接庫地址中
export LD_LIBRARY_PATH=/usr/local/lib/
)


編譯出現的問題:
1:undefined reference to '__cxa_end_cleanup'及 __gxx_personality_v0(這個破問題折騰我三天)
解決:http://blog.csdn.net/zz603976046/article/details/76886727
2.make有錯誤的mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)就是這個,去這個文件把這行註釋掉也可以

 

 

 

暫時還未測試FAAC的效率,還沒有弄清楚FFmpeg和faac的關係,準備後面再搞搞ffmpeg中的fdkaac

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章