libuavs3d是AVS3標準的解碼器,最高可支援8K/60P影片實時解碼,支援windows/linux/arm/ios等所有常用平臺,在移動端最高支援4K/30fps影片實時解碼,解碼速度大幅領先AV1開源解碼器dav1d和aomdec。
在《FFmpeg開發實戰:從零基礎到短影片上線》一書的“8.1.2 給FFmpeg整合avs2”介紹瞭如何在Windows環境給FFmpeg整合AVS2的編解碼器,其實也能給FFmpeg整合AVS3的解碼器libuavs3d。詳細的整合步驟說明如下。
一、編譯AVS3的解碼器libuavs3d
libuavs3d的原始碼託管在https://github.com/uavs3/uavs3d,注意要下載master的主幹程式碼,不可下載2019年的1.0版本程式碼(該版本的原始碼編譯有問題)。主幹程式碼的下載地址是https://codeload.github.com/uavs3/uavs3d/zip/refs/heads/master,把該連結複製到瀏覽器地址再按Enter鍵,即可開始下載原始碼包。
libuavs3d的編譯步驟說明如下。
1、解壓下載好的壓縮包,雙擊執行uavs3d-master原始碼目錄下的version.bat,以便生成標頭檔案version.h。
2、啟動Visual Studio 2022,在歡迎頁面單擊右側的“開啟專案或解決方案”,在彈出的檔案對話方塊中選擇uavs3d-master/build/vs2017目錄下的uavs3d.sln。
3、等待Visual Studio開啟uavs3d-master工程,依次選擇頂部選單“生成”→“配置管理器”,在開啟的配置管理器介面上,找到左上角的“活動解決方案配置”下拉框,把Debug模式改為Release模式,再單擊右下角的關閉按鈕。
4、右擊介面右側解決方案列表中的common,選擇右鍵選單底部的“屬性”。在彈出的屬性視窗中,將右側常規屬性列表中的“Windows SDK 版本”這項改為“10.0(最新安裝的版本)”,將“平臺工具集”這項改為“Visual Studio 2022(v143)”,目的是把這兩項的值改為自己電腦上的版本。
5、右擊介面右側解決方案列表中的libuavs3d,選擇右鍵選單底部的“屬性”。在彈出的屬性視窗中,將右側常規屬性列表中的“Windows SDK 版本”這項改為“10.0(最新安裝的版本)”,將“平臺工具集”這項改為“Visual Studio 2022(v143)”,目的是把這兩項的值改為自己電腦上的版本。
6、單擊介面右側解決方案列表中的libuavs3d,再依次選擇頂部選單“生成”→“生成libuavs3d”(或“Build libuavs3d”)。等待生成完畢,可在uavs3d工程的uavs3d-master/bin目錄下找到uavs3d的庫檔案(包括libuavs3d.dll和libuavs3d.lib)。
二、安裝AVS3的解碼器libuavs3d
雖然Visual Studio把libuavs3d的dll庫檔案編譯了出來,但是若想讓FFmpeg識別libuavs3d,還得依照相應的目錄結構放入libuavs3d的庫檔案和標頭檔案,從而模擬Linux環境的安裝結果。詳細的安裝步驟參考《FFmpeg開發實戰:從零基礎到短影片上線》一書的第8章的“8.1.4 給FFmpeg整合freetype”。
(1)在msys64的/usr/local目錄下新建libuavs3d目錄,並在該目錄下建立lib子目錄;
(2)把uavs3d工程中uavs3d-master/bin目錄下的libuavs3d.lib和libuavs3d.dll兩個檔案複製到上面第一步建立的lib目錄;
(3)在lib目錄下建立pkgconfig子目錄,並在pkgconfig目錄下新建檔案uavs3d.pc,給該pc檔案填入以下的配置內容。
(4)在libuavs3d目錄下建立include目錄,並把uavs3d工程的uavs3d-master/source/decoder/uavs3d.h複製到include目錄下。
經過以上步驟操作後的libuavs3d目錄結構如下所示:
(5)接著給環境變數PKG_CONFIG_PATH新增libuavs3d的pkgconfig路徑,也就是在/etc/profile檔案末尾新增如下一行內容。
(6)儲存並退出profile檔案後,在MSYS視窗中執行下面命令重新載入環境變數。
(7)執行下面命令檢視當前的環境變數,發現PKG_CONFIG_PATH的修改已經奏效。
三、讓FFmpeg啟用libuavs3d
由於FFmpeg預設未啟用libuavs3d,因此需要重新配置FFmpeg,標明啟用libuavs3d,然後重新編譯安裝FFmpeg。FFmpeg的Windows環境完整編譯過程參見《FFmpeg開發實戰:從零基礎到短影片上線》一書的“8.1 Windows環境編譯FFmpeg”,詳細的啟用步驟說明如下。
1、回到FFmpeg原始碼的目錄,執行以下命令重新配置FFmpeg,主要增加啟用libuavs3d。(增加了選項--enable-libuavs3d)
2、執行下面命令編譯FFmpeg。
3、執行下面命令安裝FFmpeg。
4、執行以下命令檢視FFmpeg的版本資訊。
檢視控制檯回顯的FFmpeg版本資訊,找到“--enable-libuavs3d”,說明FFmpeg正確啟用了AVS3的解碼器libuavs3d。