影片的封裝格式除了古老的MP4和ASF之外,還有較新的WebM格式,該格式的音訊編碼主要採用Opus,影片編碼採用VP8或者VP9。其中Opus的編解碼庫為libopus,VP8和VP9的編解碼庫為libvpx。因此要先安裝編譯這兩個庫,再讓FFmpeg開啟opus和vpx支援,在Linux環境的操作過程包含三個步驟:安裝libopus、安裝libvpx、重新編譯FFmpeg,分別說明如下。
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。將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。
(2)進入解壓後的libopus目錄,執行下面命令配置libopus。
(3)執行下面命令編譯libopus。
(4)編譯完成後,執行下面命令安裝libopus。
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。將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。
(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”)
(3)執行下面命令編譯libvpx。
(4)編譯完成後,執行下面命令安裝libvpx。
3、重新編譯FFmpeg
由於FFmpeg預設未啟用opus和vpx,因此需要重新配置FFmpeg,標明啟用opus和vpx,然後重新編譯安裝FFmpeg。FFmpeg的Linux環境完整編譯過程參見《FFmpeg開發實戰:從零基礎到短影片上線》一書的“1.2.3 自行編譯與安裝FFmpeg”,詳細的啟用步驟說明如下。
(1)回到FFmpeg原始碼的目錄,執行以下命令重新配置FFmpeg,主要增加啟用libopus和libvpx。(增加了選項--enable-libopus --enable-libvpx)
(2)執行下面命令編譯FFmpeg。
(3)執行下面命令安裝FFmpeg。
(4)執行以下命令檢視FFmpeg的版本資訊。
檢視控制檯回顯的FFmpeg版本資訊,找到“--enable-libopus --enable-libvpx”,說明FFmpeg正確啟用了libopus和libvpx。