AV1如此炙手可熱,以致它的編解碼器如雨後春筍,單單FFmpeg支援的AV1編解碼器,就有libaom、libdav1d、libsvtav1、librav1e四種。經過在Linux環境實地驗證,前三種都能在華為雲的尤拉系統上編譯整合,只有librav1e尚未成功編譯。下面就介紹如何在Linux環境給FFmpeg整合libaom、libdav1d、libsvtav1這三種AV1編解碼庫。
一、安裝libaom
libaom是谷歌提供的AV1編解碼工具,其程式碼託管在谷歌網站,國內無法訪問,開發者可透過清華大學的映象網站下載它的原始碼,下載地址是https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/pool/main/a/aom/aom_3.7.1.orig.tar.gz。
libaom的安裝步驟說明如下。
1、將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。
2、進入解壓後的build目錄,執行下面命令配置libaom。
3、執行下面命令編譯libaom。
4、編譯完成後,執行下面命令安裝libaom。
二、安裝libsvtav1
SVT-AV1專案最初由英特爾與奈飛公司合作建立,後來被AOM官方收編,它的原始碼託管頁面在https://gitlab.com/AOMediaCodec/SVT-AV1。因為《FFmpeg開發實戰:從零基礎到短影片上線》一書採用的FFmpeg版本為5.1.2,相容該版本FFmpeg的SVT-AV1最高版本為1.4.0,所以需要下載這個原始碼連結https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.4.0/SVT-AV1-v1.4.0.tar.gz。注意,如果使用更高版本的SVT-AV1,會導致後面FFmpeg編譯失敗。
libsvtav1的安裝步驟說明如下。
1、將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。
2、進入解壓後的Build目錄,執行下面命令配置libsvtav1。
3、執行下面命令編譯libsvtav1。
4、編譯完成後,執行下面命令安裝libsvtav1。
三、安裝libdav1d
libdav1d是一款AV1的解碼器,只負責解碼,不負責編碼。它的原始碼託管頁面在https://code.videolan.org/videolan/dav1d/,原始碼包的下載地址是https://code.videolan.org/videolan/dav1d/-/archive/1.3.0/dav1d-1.3.0.tar.gz。
libdav1d的安裝步驟說明如下。
1、安裝編譯工具meson和ninja
meson和ninja是基於Python語言的編譯工具,故需確保伺服器已經安裝了Python3。另外,由於伺服器訪問國外網站不穩定,因此可先設定國內的資源映象網站,比如移動雲。具體的映象設定與工具安裝命令如下:
2、將下載好的壓縮包上傳到伺服器並解壓,也就是依次執行以下命令。
3、進入解壓後的build目錄,執行下面命令配置libdav1d。
4、執行下面命令編譯libdav1d。
5、編譯完成後,執行下面命令安裝libdav1d。
四、讓FFmpeg啟用libaom、libdav1d、libsvtav1
由於FFmpeg預設未啟用libaom、libdav1d、libsvtav1,因此需要重新配置FFmpeg,標明啟用libaom、libdav1d、libsvtav1,然後重新編譯安裝FFmpeg。FFmpeg的Linux環境完整編譯過程參見《FFmpeg開發實戰:從零基礎到短影片上線》一書的“1.2.3 自行編譯與安裝FFmpeg”,詳細的啟用步驟說明如下。
1、載入環境變數PKG_CONFIG_PATH和LD_LIBRARY_PATH
因為libaom、libdav1d、libsvtav1三個庫預設安裝在/usr/local/lib64目錄,所以要將相關路徑載入到PKG_CONFIG_PATH和LD_LIBRARY_PATH。執行下面命令編輯profile檔案:
往.bash_profile的檔案末尾新增下面兩行:
儲存並退出.bash_profile之後,執行以下命令載入環境變數:
然後執行下面的環境變數檢視命令,確保環境變數PKG_CONFIG_PATH和LD_LIBRARY_PATH已經成功載入。
2、回到FFmpeg原始碼的目錄,執行以下命令重新配置FFmpeg,主要增加啟用libaom、libdav1d、libsvtav1。(增加了選項--enable-libaom --enable-libsvtav1 --enable-libdav1d)
3、執行下面命令編譯FFmpeg。
4、執行下面命令安裝FFmpeg。
5、執行以下命令檢視FFmpeg的版本資訊。
檢視控制檯回顯的FFmpeg版本資訊,找到“--enable-libaom --enable-libsvtav1 --enable-libdav1d”,說明FFmpeg正確啟用了AV1的三個編解碼器libaom、libdav1d、libsvtav1。