【十七】 Windows环境下使用VTM编解码视频测试 | 详细图解和步骤

在这里插入图片描述

一、安装H.266/VVC测试软件VTM

VTM目前为止最新版本为VVCSoftware_VTM-VTM-10.0,下载的地址为:

https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM

  • 找到VTM所有更新版本
    在这里插入图片描述
  • 下载最新版本VTM10.0的压缩包到本地
    在这里插入图片描述
  • 在本地对下载的压缩包进行解压
    在这里插入图片描述
    此时第一步VTM的下载工作就完成,若要直接获得VTM10.0压缩包的同学,可以在公众号直接回复“VTM10”即可,公众号二维码见文章末尾

二、安装工程编译工具Cmake
  • 在软件管家中下载Cmake编译工具
    在这里插入图片描述
    在这里插入图片描述
    如果不想自己下载的同学,可以直接在我的公众号后台,回复“Cmake”关键字,即可获取Cmake压缩文件,公众号二维码间文章最后。

  • Cmake的本地安装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    点击开始安装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在“开始”通过cmd命令调出命令提示符,检验Cmake在本地是否安装成功
    在这里插入图片描述


三、生成VTM工程文件
  • VTM10.0文件夹下建立一个批处理文件,文件名为test.bat,名称随便起,只要文件以.bat结尾即可,下面建立批处理文件,根据自己电脑安装的VS版本自行选择

VS 2015

mkdir build 
cd build
cmake .. -G "Visual Studio 14 2015 Win64"

VS 2017

mkdir build 
cd build
cmake .. -G "Visual Studio 15 2017 Win64"

VS 2019

mkdir build 
cd build
cmake .. -G "Visual Studio 16 2019"
  • 具体操作

打开记事本,根据VS版本,把上面的命令粘贴进去
在这里插入图片描述
保存到VTM10.0文件夹下,并以.bat结尾命令文件名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、用VS对生成的VTM工程文件NextSoftware.sln进行编译

在build目录下找到NextSoftware.sln文件,并用VS打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行完上述操作后,打开VTM10.0文件夹中的bin文件下相应的位置,可以看到生成的编码器和解码器的可执行文件,如下:
在这里插入图片描述
至此,项目编译工作结束


五、视频序列的编码

1、首先,我们在VTM10.0的文件夹下面创建一个测试文件,每次我们对视频进行编码测试时,都需要建立一个单独的文件,最好以时间和日期加以标识,以示区分
在这里插入图片描述
2、在创建的文件夹下面添加以下文件

  • 所用到的测试序列的配置文件,路径为VTM10.0文件夹下面的子文件cfg中的子文件per-sequence,在该文件夹下面,找到对应测试视频序列的配置文件,并将其复制到创建的测试文件夹下面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 把编码器的配置文件加入到测试文件夹中,这里我们采用全帧AI编码方式,在cfg文件夹下面选择对应的编码器配置文件
    在这里插入图片描述

  • 把之前VS编译生成的编码器和解码器的可执行文件复制到测试文件夹中
    在这里插入图片描述

  • 把待编解码测试的测试序列添加到测试文件夹当中,VVC测试序列可以在我的公众号后台,回复“VVC测试序列”,即可获取,公众号二维码,见文中末尾

  • 测试文件夹,所添加的所有内容如下
    在这里插入图片描述

  1. 对编码器的配置文件进行修改

在测试文件夹中,打开编码器配置文件encoder_intra_vtm.cfg和序列配置文件BasketballDrill.cfg,建议使用Notepad++软件打开,可以自己在网上找该软件的资源

BasketballDrill.cfg中下面这段内容复制到encoder_intra_vtm.cfg中相应的位置,具体如下图所示:
在这里插入图片描述
注意:这里有个FramesToBeEncoded是需要编码的帧数,因为我们只是做测试,所以我们把这个值改为50
在这里插入图片描述
粘贴完成后,点击保存

因为在该文件中,有一个参数TemporalSubsampleRatio 我们设置为8,表示我们需要编码的50帧中,每隔开8帧,我们编码一帧,所以最后编码的帧数为 50 / 8 ~= 7帧,只有不等于整数,就向前取整。

4、接下来,用VS在工程文件中的Encoder.app属性也调试栏中添加编码命令参数和工作目录
在这里插入图片描述
在这里插入图片描述

  • 其中命令参数的格式为: -c 编码器配置文件名 -c 待测试序列的配置文件名
  • 工作目录为我们建立的测试文件夹的路径

5、在测试文件夹下面新建一个批处理文件test.bat,内容如下,按照之前建立批处理文件的方式,保存后就点击运行即开始编码

批处理文件的内容

EncoderApp.exe -c E:\VVCSoftware_VTM-VTM-10.0\0922Test\encoder_intra_vtm.cfg   > 

Enc_Out.txt
 
DecoderApp.exe   -b str.bin -o dec.yuv
 
pause

编码后的输出结果:
在这里插入图片描述
BeyondCompare软件去比较dec.yuvrec.yuv是否编解码一致,如果一致,则说明测试方案正确无误。直到这一步才能最终确定自己的测试方案是否正确。比较后,如果文件二进制相同,则显示二进制相同,如果二进制不同,则说明自己的测试方案有误,这时候就需要我们对代码进行调试,找到问题所在。
在这里插入图片描述
检查编码性能,打开日志文件Enc_Out.txt,在这个文件里面记录了每一帧的码率、以及各YUV三个分量的PSNR指标,最后还有平均性能指标。将自己测试方案的性能和Anchorde的性能相比较,如果码率上升并且PSNR降低,说明方案不行;如果码率下降同时PSNR降低,说明方案性能良好,可以接受。但是如果码率上升,PSNR下降或者码率下降,PSNR上升,则就无法判断性能的好坏,这种情况下,就需要使用性能更好的计算机去测试小序列(C、D)的全帧编解码情况,来进一步根据结果进行方案性能的判断。
在这里插入图片描述


六、一些补充说明

编码器配置文件的一些参数说明:

  • InputFile:存放测试序列的路径
  • FramesToBeEncoded:测试总共的编码帧数
  • QP:当前序列是在什么量化参数下进行编码的,这里设置为37,这样编码速度比较快
  • TemporalSbusampleRatio:指的是编码的间隔数,就是每间隔多少帧编码一帧,AI的默认值是8

一些编解码指令

  • -c :表示编码指令
  • -b :表示解码指令
  • -o :表示输出指令

【说明】:文章参考自wD、路人博主的博客


更多关于视频编码知识和资源的分享,更精致的文章排版,欢迎关注博主微信公众号,一起交流、学习、进步!!!
在这里插入图片描述

  • 11
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值