FFmpeg內置了aac音頻格式,在《FFmpeg開發實戰:從零基礎到短視頻上線》一書的“5.2.2 Linux環境集成mp3lame”又介紹瞭如何給FFmpeg集成mp3格式,常見的音頻文件除了這兩種之外,還有ogg和amr兩種格式也較常用。其中ogg格式的編解碼依賴於libogg和libvor ...
FFmpeg內置了aac音頻格式,在《FFmpeg開發實戰:從零基礎到短視頻上線》一書的“5.2.2 Linux環境集成mp3lame”又介紹瞭如何給FFmpeg集成mp3格式,常見的音頻文件除了這兩種之外,還有ogg和amr兩種格式也較常用。其中ogg格式的編解碼依賴於libogg和libvorbis,而amr格式的編解碼依賴於opencore-amr。前文介紹了在Linux環境給FFmpeg集成vorbis和amr,接下來介紹如何在Windows環境給FFmpeg集成vorbis和amr。
1、安裝libogg
libogg支持解析ogg文件結構,也可用於封裝ogg格式,它的安裝步驟說明如下。
(1)到https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libogg.html下載最新的libogg源碼,比如2021年6月發佈的libogg-1.3.5,該版本的源碼下載地址是https://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.gz。執行下麵命令解壓下載好的壓縮包:
tar zxvf libogg-1.3.5.tar.gz
cd libogg-1.3.5
(2)進入解壓後的libogg目錄,運行下麵命令配置libogg。
./configure --prefix=/usr/local/libogg --enable-static --disable-shared
(3)運行下麵命令編譯libogg。
make
(4)編譯完成後,運行下麵命令安裝libogg。
make install
(5)給環境變數PKG_CONFIG_PATH添加libogg的pkgconfig路徑,也就是在/etc/profile文件末尾添加如下一行內容:
export PKG_CONFIG_PATH=/usr/local/libogg/lib/pkgconfig:$PKG_CONFIG_PATH
然後執行下麵命令重新載入環境變數:
source /etc/profile
執行下麵命令查看當前的環境變數,發現PKG_CONFIG_PATH的修改已經奏效。
env | grep PKG_CONFIG_PATH
2、安裝libvorbis
Vorbis是一種免費的音頻編碼標準,libvorbis是Vorbis音頻的編解碼庫。因為Vorbis音頻通常封裝在ogg格式中,所以libvorbis依賴於libogg,它的安裝步驟說明如下。
(1)到https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libvorbis.html下載最新的libvorbis源碼,比如2020年7月發佈的libvorbis-1.3.7,該版本的源碼下載地址是https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.gz。執行下麵命令解壓下載好的壓縮包:
tar zxvf libvorbis-1.3.7.tar.gz
cd libvorbis-1.3.7
(2)進入解壓後的libvorbis目錄,運行下麵命令配置libvorbis。
./configure --prefix=/usr/local/vorbis --enable-static --disable-shared --disable-oggtest
(3)運行下麵命令編譯libvorbis。
make
(4)編譯完成後,運行下麵命令安裝libvorbis。
make install
(5)給環境變數PKG_CONFIG_PATH添加vorbis的pkgconfig路徑,也就是在/etc/profile文件末尾添加如下一行內容:
export PKG_CONFIG_PATH=/usr/local/vorbis/lib/pkgconfig:$PKG_CONFIG_PATH
然後執行下麵命令重新載入環境變數:
source /etc/profile
執行下麵命令查看當前的環境變數,發現PKG_CONFIG_PATH的修改已經奏效。
env | grep PKG_CONFIG_PATH
3、安裝opencore-amr
opencore-amr是AMR音頻的編解碼庫,支持對AMR-NB和AMR-WB格式的音頻進行編解碼,它的安裝步驟說明如下。
(1)到https://sourceforge.net/projects/opencore-amr/files/opencore-amr/下載最新的opencore-amr源碼,比如2022年10月發佈的opencore-amr-0.1.6,該版本的源碼下載地址是https://nchc.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.6.tar.gz。執行下麵命令解壓下載好的壓縮包:
tar zxvf opencore-amr-0.1.6.tar.gz
cd opencore-amr-0.1.6
(2)進入解壓後的opencore-amr目錄,運行下麵命令配置opencore-amr。
./configure --prefix=/usr/local/amr --enable-static --disable-shared
(3)運行下麵命令編譯opencore-amr。
make
(4)編譯完成後,運行下麵命令安裝opencore-amr。
make install
4、重新編譯FFmpeg
由於FFmpeg預設未啟用ogg和amr,因此需要重新配置FFmpeg,標明啟用ogg和amr,然後重新編譯安裝FFmpeg。FFmpeg的Windows環境完整編譯過程參見《FFmpeg開發實戰:從零基礎到短視頻上線》一書的“8.1 Windows環境編譯FFmpeg”,詳細的啟用步驟說明如下。
(1)確保下列路徑均已載入至環境變數PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/libogg/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/vorbis/lib/pkgconfig:$PKG_CONFIG_PATH
(2)修改vorbis的pc描述文件,先執行下麵命令進入vorbis的PKG目錄:
cd /usr/local/vorbis/lib/pkgconfig
該目錄下有vorbis.pc、vorbisenc.pc和vorbisfile.pc三個pc文件,三個都要修改。其中vorbis.pc的Libs參數末尾增加“ -logg”,也就是改成下麵這樣:
Libs: -L${libdir} -lvorbis -logg
vorbisenc.pc和vorbisfile.pc的Libs參數末尾都添加“ -lvorbis -logg”,比如vorbisenc.pc改成下麵這樣:
Libs: -L${libdir} -lvorbisenc -lvorbis -logg
又如vorbisfile.pc改成下麵這樣:
Libs: -L${libdir} -lvorbisfile -lvorbis -logg
(3)回到FFmpeg源碼的目錄,執行以下命令重新配置FFmpeg,主要增加啟用ogg和amr。(增加了選項--enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3)
./configure --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libfreetype --enable-sdl2 --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-iconv --enable-zlib --extra-cflags='-I/usr/local/lame/include -I/usr/local/libogg/include -I/usr/local/amr/include' --extra-ldflags='-L/usr/local/lame/lib -L/usr/local/libogg/lib -L/usr/local/amr/lib' --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
(4)運行下麵命令編譯FFmpeg。
make clean
make -j4
(5)執行下麵命令安裝FFmpeg。
make install
mv /usr/local/ffmpeg/bin/*.lib /usr/local/ffmpeg/lib/
(6)運行以下命令查看FFmpeg的版本信息。
ffmpeg -version
查看控制台回顯的FFmpeg版本信息,找到“--enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3”,說明FFmpeg正確啟用了新增的音頻格式ogg和amr。