【十七】 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测试序列”,即可获取,公众号二维码,见文中末尾
-
测试文件夹,所添加的所有内容如下

- 对编码器的配置文件进行修改
在测试文件夹中,打开编码器配置文件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.yuv和rec.yuv是否编解码一致,如果一致,则说明测试方案正确无误。直到这一步才能最终确定自己的测试方案是否正确。比较后,如果文件二进制相同,则显示二进制相同,如果二进制不同,则说明自己的测试方案有误,这时候就需要我们对代码进行调试,找到问题所在。
检查编码性能,打开日志文件Enc_Out.txt,在这个文件里面记录了每一帧的码率、以及各YUV三个分量的PSNR指标,最后还有平均性能指标。将自己测试方案的性能和Anchorde的性能相比较,如果码率上升并且PSNR降低,说明方案不行;如果码率下降同时PSNR降低,说明方案性能良好,可以接受。但是如果码率上升,PSNR下降或者码率下降,PSNR上升,则就无法判断性能的好坏,这种情况下,就需要使用性能更好的计算机去测试小序列(C、D)的全帧编解码情况,来进一步根据结果进行方案性能的判断。
六、一些补充说明
编码器配置文件的一些参数说明:
InputFile:存放测试序列的路径FramesToBeEncoded:测试总共的编码帧数QP:当前序列是在什么量化参数下进行编码的,这里设置为37,这样编码速度比较快TemporalSbusampleRatio:指的是编码的间隔数,就是每间隔多少帧编码一帧,AI的默认值是8
一些编解码指令
- -c :表示编码指令
- -b :表示解码指令
- -o :表示输出指令
【说明】:文章参考自wD、路人博主的博客
更多关于视频编码知识和资源的分享,更精致的文章排版,欢迎关注博主微信公众号,一起交流、学习、进步!!!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)