ffmpeg對amr格式編解碼

linux下的ffmpeg默認情況下是不支持amr格式解碼的,因此考慮手動編譯ffmpeg源代碼增加解碼器以便支持amr文件格式的解碼。

系統環境:Suse 64bit OS
前期準備:
1、  下載ffmpeg源代碼:http://ffmpeg.org/download.html,這裏選擇版本爲0.11.1
2、  下載OpenCORE AMR:http://sourceforge.net/projects/opencore-amr/,這裏選擇的版本爲0.1.3。

並將下載的文件存放與/home/ffmpeg目錄下,以root用戶登錄系統。

具體步驟:

1、  編譯安裝opencore-amr,這裏需要注意的是在執行configure命令的時候要添加--enable-shared=no --enable-static=yes參數,其主要作用是禁止生產動態鏈接庫、允許生產靜態庫。

chmod 755 opencore-amr-0.1.3.tar.gz

tar -xzvf opencore-amr-0.1.3.tar.gz

cd opencore-amr-0.1.3

./configure --enable-shared=no --enable-static=yes

make

make install

 

2、  編譯安裝ffmpeg,注意configure命令後面所要添加的參數,可以通過執行configure --help命令查看後面所允許帶的參數

chomd 755 ffmpeg-0.11.1.tar.gz

tar -xzvf ffmepg-0.11.1.tar.gz

cd ffempg

./configure --enable-gpl --enable-version3 --enable-nonfree --disable-ffplay --disable-ffprobe --disable-ffserver --enable-libopencore-amrnb --enable-libopencore-amrwb --prefix=/home/ffmpeg/target

make

make install

以上命令成功執行後將會在/home/ffmpeg/target目錄下的bin目錄得到ffmpeg文件,該文件已經包含amr解碼器

3、  測試:

chmod 755 ffmpeg

./ffmpeg -I PA003.wav -ar 8000 -ab 12.2k -ac 1 target.amr

 

4、  注意事項:

a)         以上方式都是通過靜態庫的形式編譯,採用靜態庫的形式編譯的好處在於:編譯後的可執行文件ffmpeg可以不依賴於amr解碼器,簡單地說,可執行文件已經將amr解碼器包含在內了。

b)         ffmpeg在編譯時候會優先查找amr解碼器的動態鏈接庫,如果沒有找到,則查找amr解碼器的靜態庫。在第一步中如果沒有禁止amr生成動態鏈接庫,則ffmpeg將採用amr的動態鏈接庫進行編譯,其缺點是,編譯後的可執行文件ffmpeg將依賴於amr的動態鏈接庫,如果系統的動態鏈接庫搜索路徑LD_LIBRARY_PATH不包含amr動態鏈接庫所在路徑,則ffmpeg將會報錯,無法正常工作。

c)         amr編譯安裝時不建議添加prefix=XXX參數(./configure)修改amr安裝路徑,這樣ffmpeg在編譯安裝時將出現找不到amr解碼器的情況。

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