VTM是H.266/VVC的参考软件,需要在Visual Studio环境下运行

VTM(H.266)安装配置

安装

1.下载,我选了16.0版本

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

image-20220327155859999

2.解压并阅读readme文件

image-20220327161856243

3.在VTM根目录创建build文件夹

image-20220327162007771

4.下载CMake

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

image-20220327164124546

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

image-20220327164900030

image-20220327164934349

选择路径

image-20220327165055278

6.打开命令行检查是否安装成功

image-20220327180707141

7.双击桌面图标

image-20220327182442825

8.左下角Configue

image-20220327182556500

finish-->Generate

9.编译成功后在build文件夹里查看

image-20220327182808992

10.打开.sln文件

image-20220327183135578

11.右键EncoderApp设为启动项,右键解决方案并重新生成

image-20220330100648536

教程说release模式编码快,我用release模式重新生成一直卡住,生成不了,debug模式一下就好,暂时不知道什么问题

后来解决:我在release模式生成解决方案等了十多分钟才成功,可能是单纯太慢了

注意的是:我后面的截图可能debug和release模式不一致,是因为我不断调bug,截图有点乱,配置的时候前后保持一致就可以

12.ctrl+F5运行

image-20220328091151947

13.打开VTM的bin文件夹相应位置可以看到相应可执行文件

image-20220328092649845

测试

1.在VTM根目录下新建测试文件夹,标明日期时间

image-20220328092829719

2.找一个视频序列的配置文件复制到测试文件夹下面(这里复制错了,是BasketballDrill.cfg)

image-20220328095742186

image-20220328095816205

3.在cfg目录下把编码器的配置文件复制到测试文件夹下面

image-20220328095956062

image-20220328100024127

4.把DecoderApp.exe和EncoderApp.exe复制到测试文件夹

image-20220328100205113

5.把相应的待测试yuv视频文件加入到测试文件夹

视频文件通过教程博主公众号领取,文件夹很大,50个G

image-20220328105122187

image-20220328105153259

6.修改编码器配置文件

在测试文件夹中打开编码器配置文件encoder_intra_vtm.cfg和序列配置文件BasketballDrill.cfg

将BasketballDrill.cfg的内容复制到encoder_intra_vtm.cfg对应位置

image-20220328105716319

image-20220330101105556

7.FramesToBeEncoded是需要编码的帧数,将其改为50,减少编码时间

image-20220328130142844

8.保存

9.在vs中的EncoderApp中,属性-->调试,修改命令参数和工作目录

这里面属性页的Debug和Release模式要和前面设置的对应

命令参数的格式为: -c 编码器配置文件名 -c 待测试序列的配置文件名

工作目录为我们建立的测试文件夹的路径

image-20220328131023557

10.修改DecoderApp命令参数和工作目录

image-20220331160205499

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。 image-20220328133652158

image-20220328133715651 11.双击执行,最后结果显示在命令行中,编码数据写入Enc_Out.txt中

结果:

image-20220331161812288

162.999是编码时间,我改成了FramesToBeEncoded=2,编2帧

image-20220331161919517

0.137是解码时间,不懂看最后的问题1

12.解码后的yuv视频

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

image-20220331164206976

调整设置

image-20220331164243717

image-20220331164324310

最终

image-20220331164403271

遇到的问题

  1. 编码286MB的BasketballDrill_832x480_50.yuv,在Release模式下我用了69分钟,教程里面五分钟结束,不知道什么原因,即使是在配置文件里设置编码1帧也要一分钟多

image-20220330101532017

image-20220330101603157

image-20220330101641243

分析:经过询问,帧内编码一分钟一帧还算正常,教程里面完成时用的Totaltime很少是因为bat文件中写了解码的命令,最后只显示了解码的时间,我为了测试编码就只写了第一行编码命令,显示的是编码时间。

至于我用了69分钟,好像也正常,问别人才知道,人家好像就编前四五帧,我是把500帧按8间隔都编完了时间才那么长

image-20220331160934002

  1. 在测试文件夹中的配置文件encoder_intra_vtm.cfg中设置编码帧数为1之后,bat文件编码了1帧,在vs里,运行EncoderApp仍然编码整个文件500帧,清理解决方案并重新生成无效,解码正常(未解决)

  2. 解码时报错

image-20220330133751788

参考了这个链接进行设置:https://blog.csdn.net/dengx1018/article/details/77619908?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

然后出现了这个情况:

image-20220330134659871

原因: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/

 

posted on 2022-04-01 09:01  托马斯源  阅读(1898)  评论(0编辑  收藏  举报