FFmpeg開發筆記(十三)Windows環境給FFmpeg整合libopus和libvpx

aqi00發表於2024-04-13
MP4是最常見的影片封裝格式,在《FFmpeg開發實戰:從零基礎到短影片上線》一書的“1.2.3 自行編譯與安裝FFmpeg”介紹瞭如何給FFmpeg整合x264和x265兩個庫,從而支援H.264和H.265兩種標準的編解碼。

影片的封裝格式除了悠久的MP4和ASF之外,還有較新的WebM格式,該格式的音訊編碼主要採用Opus,影片編碼採用VP8或者VP9。其中Opus的編解碼庫為libopus,VP8和VP9的編解碼庫為libvpx。前文介紹了在Linux環境給FFmpeg整合libopus和libvpx,接下來介紹如何在Windows環境給FFmpeg整合libopus和libvpx。

1、安裝libopus

Opus是一種在網際網路上處理語音互動和音訊傳輸的編碼標準,該標準的編解碼器叫做libopus,它的安裝步驟說明如下。
(1)到https://ftp.osuosl.org/pub/xiph/releases/opus/下載最新的libopus原始碼,比如2023年4月釋出的libopus-1.4,該版本的原始碼下載地址是https://ftp.osuosl.org/pub/xiph/releases/opus/opus-1.4.tar.gz。執行下面命令解壓下載好的壓縮包:

tar xzvf opus-1.4.tar.gz
cd opus-1.4

(2)進入解壓後的libopus目錄,執行下面命令配置libopus。

./configure --prefix=/usr/local/libopus

(3)執行下面命令編譯libopus。

make

(4)編譯完成後,執行下面命令安裝libopus。

make install

(5)給環境變數PKG_CONFIG_PATH新增libopus的pkgconfig路徑,也就是在/etc/profile檔案末尾新增如下一行內容:

export PKG_CONFIG_PATH=/usr/local/libopus/lib/pkgconfig:$PKG_CONFIG_PATH

然後執行下面命令重新載入環境變數:

source /etc/profile

執行下面命令檢視當前的環境變數,發現PKG_CONFIG_PATH的修改已經奏效。

env | grep PKG_CONFIG_PATH

2、安裝libvpx

libvpx是影片編碼標準VP8和VP9的編解碼器,它的安裝步驟說明如下。
(1)到https://github.com/webmproject/libvpx/tags下載最新的libvpx原始碼,比如2023年9月釋出的libvpx-1.13.1,該版本的原始碼下載地址是https://github.com/webmproject/libvpx/archive/refs/tags/v1.13.1.tar.gz。執行下面命令解壓下載好的壓縮包:

tar zxvf libvpx-1.13.1.tar.gz
cd libvpx-1.13.1

(2)進入解壓後的libvpx目錄,執行下面命令配置libvpx。(如果不加--enable-pic,在編譯FFmpeg時會報錯“relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC”)

./configure --prefix=/usr/local/libvpx --enable-pic --disable-examples --disable-unit-tests

(3)執行下面命令編譯libvpx。

make

(4)編譯完成後,執行下面命令安裝libvpx。

make install

(5)給環境變數PKG_CONFIG_PATH新增libvpx的pkgconfig路徑,也就是在/etc/profile檔案末尾新增如下一行內容:

export PKG_CONFIG_PATH=/usr/local/libvpx/lib/pkgconfig:$PKG_CONFIG_PATH

然後執行下面命令重新載入環境變數:

source /etc/profile

執行下面命令檢視當前的環境變數,發現PKG_CONFIG_PATH的修改已經奏效。

env | grep PKG_CONFIG_PATH

3、重新編譯FFmpeg

由於FFmpeg預設未啟用opus和vpx,因此需要重新配置FFmpeg,標明啟用opus和vpx,然後重新編譯安裝FFmpeg。FFmpeg的Windows環境完整編譯過程參見《FFmpeg開發實戰:從零基礎到短影片上線》一書的“8.1 Windows環境編譯FFmpeg”,詳細的啟用步驟說明如下。
(1)確保下列路徑均已載入至環境變數PKG_CONFIG_PATH

export PKG_CONFIG_PATH=/usr/local/libopus/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/libvpx/lib/pkgconfig:$PKG_CONFIG_PATH

(2)回到FFmpeg原始碼的目錄,執行以下命令重新配置FFmpeg,主要增加啟用libopus和libvpx。(增加了選項--enable-libopus --enable-libvpx)

./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-libopus --enable-libvpx --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

(3)執行下面命令編譯FFmpeg。

make clean
make -j4

(4)執行下面命令安裝FFmpeg。

make install
mv /usr/local/ffmpeg/bin/*.lib /usr/local/ffmpeg/lib/
cp /usr/local/libopus/bin/libopus-0.dll /usr/local/ffmpeg/bin

(5)執行以下命令檢視FFmpeg的版本資訊。

ffmpeg -version

檢視控制檯回顯的FFmpeg版本資訊,找到“--enable-libopus --enable-libvpx”,說明FFmpeg正確啟用了新增的第三方庫libopus和libvpx。​

相關文章