Windows環(huán)境給FFmpeg集成AVS3解碼器
?AVS3是中國AVS工作組制定的第三代音視頻編解碼技術(shù)標(biāo)準(zhǔn),也是全球首個(gè)已推出的面向8K及5G產(chǎn)業(yè)應(yīng)用的視頻編碼標(biāo)準(zhǔn)。AVS工作組于2019年3月9日完成第三代AVS視頻標(biāo)準(zhǔn)(AVS3)基準(zhǔn)檔次的制訂工作,參考軟件的測試表明,AVS3基準(zhǔn)檔次的性能比上一代標(biāo)準(zhǔn)AVS2和HEVC提升了約30%。
libuavs3d是AVS3標(biāo)準(zhǔn)的解碼器,最高可支持8K/60P視頻實(shí)時(shí)解碼,支持windows/linux/arm/ios等所有常用平臺,在移動(dòng)端最高支持4K/30fps視頻實(shí)時(shí)解碼,解碼速度大幅領(lǐng)先AV1開源解碼器dav1d和aomdec。
在《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“8.1.2 給FFmpeg集成avs2”介紹了如何在Windows環(huán)境給FFmpeg集成AVS2的編解碼器,其實(shí)也能給FFmpeg集成AVS3的解碼器libuavs3d。詳細(xì)的集成步驟說明如下。
一、編譯AVS3的解碼器libuavs3d
libuavs3d的源碼托管在https://github.com/uavs3/uavs3d,注意要下載master的主干代碼,不可下載2019年的1.0版本代碼(該版本的源碼編譯有問題)。主干代碼的下載地址是https://codeload.github.com/uavs3/uavs3d/zip/refs/heads/master,把該鏈接復(fù)制到瀏覽器地址再按回車鍵,即可開始下載源碼包。
libuavs3d的編譯步驟說明如下。
1、解壓下載好的壓縮包,雙擊運(yùn)行uavs3d-master源碼目錄下的version.bat,以便生成頭文件version.h。
2、啟動(dòng)Visual Studio 2022,在歡迎頁面單擊右側(cè)的“打開項(xiàng)目或解決方案”,在彈出的文件對話框中選擇uavs3d-master/build/vs2017目錄下的uavs3d.sln。
3、等待Visual Studio打開uavs3d-master工程,依次選擇頂部菜單“生成”→“配置管理器”,在打開的配置管理器界面上,找到左上角的“活動(dòng)解決方案配置”下拉框,把Debug模式改為Release模式,再單擊右下角的關(guān)閉按鈕。
4、右擊界面右側(cè)解決方案列表中的common,選擇右鍵菜單底部的“屬性”。在彈出的屬性窗口中,將右側(cè)常規(guī)屬性列表中的“Windows SDK 版本”這項(xiàng)改為“10.0(最新安裝的版本)”,將“平臺工具集”這項(xiàng)改為“Visual Studio 2022(v143)”,目的是把這兩項(xiàng)的值改為自己電腦上的版本。
5、右擊界面右側(cè)解決方案列表中的libuavs3d,選擇右鍵菜單底部的“屬性”。在彈出的屬性窗口中,將右側(cè)常規(guī)屬性列表中的“Windows SDK 版本”這項(xiàng)改為“10.0(最新安裝的版本)”,將“平臺工具集”這項(xiàng)改為“Visual Studio 2022(v143)”,目的是把這兩項(xiàng)的值改為自己電腦上的版本。
6、單擊界面右側(cè)解決方案列表中的libuavs3d,再依次選擇頂部菜單“生成”→“生成libuavs3d”(或“Build libuavs3d”)。等待生成完畢,可在uavs3d工程的uavs3d-master/bin目錄下找到uavs3d的庫文件(包括libuavs3d.dll和libuavs3d.lib)。
二、安裝AVS3的解碼器libuavs3d
雖然Visual Studio把libuavs3d的dll庫文件編譯了出來,但是若想讓FFmpeg識別libuavs3d,還得依照相應(yīng)的目錄結(jié)構(gòu)放入libuavs3d的庫文件和頭文件,從而模擬Linux環(huán)境的安裝結(jié)果。詳細(xì)的安裝步驟參考《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的第8章的“8.1.4 給FFmpeg集成freetype”。
(1)在msys64的/usr/local目錄下新建libuavs3d目錄,并在該目錄下創(chuàng)建lib子目錄;
(2)把uavs3d工程中uavs3d-master/bin目錄下的libuavs3d.lib和libuavs3d.dll兩個(gè)文件復(fù)制到上面第一步創(chuàng)建的lib目錄;
(3)在lib目錄下創(chuàng)建pkgconfig子目錄,并在pkgconfig目錄下新建文件uavs3d.pc,給該pc文件填入以下的配置內(nèi)容。
prefix=/usr/local/libuavs3d exec_prefix=${prefix} includedir=${prefix}/include libdir=${exec_prefix}/lib Name: uavs3d Description: AVS3 decoder library Version: 1.2.0 Libs: -L${libdir} -luavs3d -lm -lpthread Cflags: -I${includedir}
(4)在libuavs3d目錄下創(chuàng)建include目錄,并把uavs3d工程的uavs3d-master/source/decoder/uavs3d.h復(fù)制到include目錄下。
經(jīng)過以上步驟操作后的libuavs3d目錄結(jié)構(gòu)如下所示:
/usr/local/libuavs3d |--------------- lib | |-- libuavs3d.lib | |-- libuavs3d.dll | |-- pkgconfig | |----- uavs3d.pc |--------------- include
(5)接著給環(huán)境變量PKG_CONFIG_PATH添加libuavs3d的pkgconfig路徑,也就是在/etc/profile文件末尾添加如下一行內(nèi)容。
export PKG_CONFIG_PATH=/usr/local/libuavs3d/lib/pkgconfig:$PKG_CONFIG_PATH
(6)保存并退出profile文件后,在MSYS窗口中執(zhí)行下面命令重新加載環(huán)境變量。
source /etc/profile
(7)執(zhí)行下面命令查看當(dāng)前的環(huán)境變量,發(fā)現(xiàn)PKG_CONFIG_PATH的修改已經(jīng)奏效。
env | grep PKG_CONFIG_PATH
三、讓FFmpeg啟用libuavs3d
由于FFmpeg默認(rèn)未啟用libuavs3d,因此需要重新配置FFmpeg,標(biāo)明啟用libuavs3d,然后重新編譯安裝FFmpeg。FFmpeg的Windows環(huán)境完整編譯過程參見《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“8.1 Windows環(huán)境編譯FFmpeg”,詳細(xì)的啟用步驟說明如下。
1、回到FFmpeg源碼的目錄,執(zhí)行以下命令重新配置FFmpeg,主要增加啟用libuavs3d。(增加了選項(xiàng)--enable-libuavs3d)
./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-libass --enable-libfribidi --enable-libxml2 --enable-fontconfig --enable-openssl --enable-libuavs3d --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
2、運(yùn)行下面命令編譯FFmpeg。
make clean make -j4
3、執(zhí)行下面命令安裝FFmpeg。
make install cp /usr/local/libuavs3d/lib/*.dll /usr/local/ffmpeg/bin
4、運(yùn)行以下命令查看FFmpeg的版本信息。
ffmpeg -version
查看控制臺回顯的FFmpeg版本信息,找到“--enable-libuavs3d”,說明FFmpeg正確啟用了AVS3的解碼器libuavs3d。
到此這篇關(guān)于Windows環(huán)境給FFmpeg集成AVS3解碼器的文章就介紹到這了,更多相關(guān)FFmpeg集成AVS3解碼器 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++示例分析內(nèi)聯(lián)函數(shù)與引用變量及函數(shù)重載的使用
為了消除函數(shù)調(diào)用的時(shí)空開銷,C++ 提供一種提高效率的方法,即在編譯時(shí)將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語言中的宏展開。這種在函數(shù)調(diào)用處直接嵌入函數(shù)體的函數(shù)稱為內(nèi)聯(lián)函數(shù)(Inline Function),又稱內(nèi)嵌函數(shù)或者內(nèi)置函數(shù)2022-08-08Visual Studio 2022中創(chuàng)建的C++項(xiàng)目無法使用萬能頭<bits/stdc++.h>的
如果大家也遇到下面這種問題,可能是沒有include文件夾中沒有bits/stdc++.h,這篇文章主要介紹了Visual Studio 2022中創(chuàng)建的C++項(xiàng)目無法使用萬能頭<bits/stdc++.h>的解決方案,感興趣的朋友跟隨小編一起看看吧2024-02-02C/C++動(dòng)態(tài)分配與釋放內(nèi)存的區(qū)別詳細(xì)解析
以下是對C與C++中動(dòng)態(tài)分配與釋放內(nèi)存的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-09-09