1. 程式人生 > 其它 >視訊編碼學習2:VTM的安裝配置

視訊編碼學習2:VTM的安裝配置

VTM是H.266/VVC的參考軟體,需要在Visual Studio環境下執行

VTM(H.266)安裝配置

安裝

1.下載,我選了16.0版本

地址:https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/tree/VTM-16.0

2.解壓並閱讀readme檔案

3.在VTM根目錄建立build資料夾

4.下載CMake

地址:https://cmake.org/download/

5.安裝

參考:https://blog.csdn.net/qq_37112826/article/details/108869737?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163486929316780271540375%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163486929316780271540375&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-108869737.pc_search_result_cache&utm_term=window10%20cmake&spm=1018.2226.3001.4187

選擇路徑

6.開啟命令列檢查是否安裝成功

7.雙擊桌面圖示

8.左下角Configue

finish-->Generate

9.編譯成功後在build資料夾裡檢視

10.開啟.sln檔案

11.右鍵EncoderApp設為啟動項,右鍵解決方案並重新生成

教程說release模式編碼快,我用release模式重新生成一直卡住,生成不了,debug模式一下就好,暫時不知道什麼問題

後來解決:我在release模式生成解決方案等了十多分鐘才成功,可能是單純太慢了

注意的是:我後面的截圖可能debug和release模式不一致,是因為我不斷調bug,截圖有點亂,配置的時候前後保持一致就可以

12.ctrl+F5執行

13.開啟VTM的bin資料夾相應位置可以看到相應可執行檔案

測試

1.在VTM根目錄下新建測試資料夾,標明日期時間

2.找一個視訊序列的配置檔案複製到測試資料夾下面(這裡複製錯了,是BasketballDrill.cfg)

3.在cfg目錄下把編碼器的配置檔案複製到測試資料夾下面

4.把DecoderApp.exe和EncoderApp.exe複製到測試資料夾

5.把相應的待測試yuv視訊檔案加入到測試資料夾

視訊檔案通過教程博主公眾號領取,資料夾很大,50個G

6.修改編碼器配置檔案

在測試資料夾中開啟編碼器配置檔案encoder_intra_vtm.cfg和序列配置檔案BasketballDrill.cfg

將BasketballDrill.cfg的內容複製到encoder_intra_vtm.cfg對應位置

7.FramesToBeEncoded是需要編碼的幀數,將其改為50,減少編碼時間

8.儲存

9.在vs中的EncoderApp中,屬性-->除錯,修改命令引數和工作目錄

這裡面屬性頁的Debug和Release模式要和前面設定的對應

命令引數的格式為: -c 編碼器配置檔名 -c 待測試序列的配置檔名

工作目錄為我們建立的測試資料夾的路徑

10.修改DecoderApp命令引數和工作目錄

11.在測試資料夾建立批處理檔案test.bat,輸入以下內容

 EncoderApp.exe   -c F:\video_Codeing_Environment\VVCSoftware_VTM-VTM-16.0\220308_Test\encoder_intra_vtm.cfg   > Enc_Out.txt 
 DecoderApp.exe   -b str.bin -o dec.yuv
 pause

其中 -c 表示編碼指令,-b表示解碼指令,-o表示輸出指令:

解釋一下:

第一行首先執行編碼.exe檔案,然後讀取對應VTM檔案目錄下的cfg檔案,按其中的配置進行編碼,並輸出編碼結果的相關資料到Enc_Out.txt檔案中。

第二行首先執行解碼的.exe檔案,然後把編碼後得到的二進位制碼流(bin檔案)進行解碼。最後輸出解碼後的重建YUV檔案。

最後一行的pause是為了不讓cmd在執行完後自動退出,便於及時發現bug。

11.雙擊執行,最後結果顯示在命令列中,編碼資料寫入Enc_Out.txt中

結果:

162.999是編碼時間,我改成了FramesToBeEncoded=2,編2幀

0.137是解碼時間,不懂看最後的問題1

12.解碼後的yuv視訊

yuv播放器:https://sourceforge.net/projects/raw-yuvplayer/

調整設定

最終

遇到的問題

  1. 編碼286MB的BasketballDrill_832x480_50.yuv,在Release模式下我用了69分鐘,教程裡面五分鐘結束,不知道什麼原因,即使是在配置檔案裡設定編碼1幀也要一分鐘多

分析:經過詢問,幀內編碼一分鐘一幀還算正常,教程裡面完成時用的Totaltime很少是因為bat檔案中寫了解碼的命令,最後只顯示瞭解碼的時間,我為了測試編碼就只寫了第一行編碼命令,顯示的是編碼時間。

至於我用了69分鐘,好像也正常,問別人才知道,人家好像就編前四五幀,我是把500幀按8間隔都編完了時間才那麼長

  1. 在測試資料夾中的配置檔案encoder_intra_vtm.cfg中設定編碼幀數為1之後,bat檔案編碼了1幀,在vs裡,執行EncoderApp仍然編碼整個檔案500幀,清理解決方案並重新生成無效,解碼正常(未解決)

  2. 解碼時報錯

參考了這個連結進行設定:https://blog.csdn.net/dengx1018/article/details/77619908?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

然後出現了這個情況:

原因:DecoderApp的屬性配置錯了,-b str.bin -o dec.yuv我寫成-t str.bin -o dec.yuv,改過來就好使了

參考連結

  1. https://blog.csdn.net/magic_show_time/article/details/120508040?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164836592116782094813360%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164836592116782094813360&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~hot_rank-9-120508040.142^v5^control,143^v6^control&utm_term=VTM%E9%85%8D%E7%BD%AE%E8%BF%90%E8%A1%8C&spm=1018.2226.3001.4187

  2. https://blog.csdn.net/YouLan999/article/details/108028359?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=1

  3. https://blog.csdn.net/weixin_45615071/article/details/108754261

  4. https://blog.csdn.net/jiamenghu/article/details/106279845

  5. https://blog.csdn.net/jiamenghu/article/details/106296844

  6. https://blog.csdn.net/zzhaoyongbo/article/details/109136642?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.pc_relevant_aa&spm=1001.2101.3001.4242.1&utm_relevant_index=3

  7. https://www.freesion.com/article/8857624016/