VVC编码程序入门超详细教程——VTM从源码下载到编码CU划分结果可视化

VVC编码程序入门超详细教程——VTM从源码下载到编码CU划分结果可视化

1.源码下载

  1. 源码下载网址:https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM

VTM-10.0一般是稳定版,VTM-10.0rc1一般是最新版(个人理解)
在这里插入图片描述

  1. 视频序列下载地址:https://media.xiph.org/video/derf/

在这里插入图片描述

  1. 下载的文件很多可能都是.y4m文件,可以使用mencoder.exe工具进行格式转换

教程:https://blog.csdn.net/shmilyforyq/article/details/70903070

2.源码编译

下载的源码在压缩包中,将其解压到一个路径,编译完成之后改变这个路径会项目一定会出错。

编译方法的讲解下面这篇博客讲的挺好,感谢老铁:

https://blog.csdn.net/Peter_Red_Boy/article/details/90321778

3.VTM的使用

3.1打开VTM工程

使用Visual Studio打开build中的xxxx.sln

最常用的是下面的三个软件:

EncoderApp:编码软件

DecoderApp:解码软件

DecoderAnalyserApp:编码分析软件

每个软件在lib中都有自己的库函数,其中做实验中使用到的EncoderLib最多,而每个软件中很少有功能型函数,大部分都是配置文件。

在这里插入图片描述

在这里插入图片描述

3.2调试用到的软件项目

上面说到了三个常用的软件项目,

步骤:选择调试模式:release和x64——右键要调试的软件——属性——(属性页)配置属性:调试——工作目录(可自定义)——应用——确定——右键要调试软件——调试——启动新实例。

注:1.要先选择调试模式再进行后面步骤,更改调试模式后需要重新配置属性页;

2.一般默认工作目录是:项目目录\bin\vs14\msvc-19.0\x86_64\release;

3.release 模式会比debug模式编码时快很多。一般建议 使用release模式。
在这里插入图片描述
经过调试之后会在工作目录下生成相应的.exe文件
在这里插入图片描述

3.3 编码

3.3.1配置cfg文件

VTM使用是需要配置参数的,参数包括cfg和输入参数。VTM目录下cfg文件夹中存储了公共测试的配置文件,分为4种
在这里插入图片描述

下面就以encoder_intra_vtm.cfg为例,打开encoder_intra_vtm.cfg。在File I/O部分设置编码视频序列和输出序列名等信息。
在这里插入图片描述

3.3.2 配置编解码软件

**第一步:**将上面配置好的.cfg文件跟3.2中生成的.exe文件放在同一个文件夹中。
在这里插入图片描述
**第二步:**使用3.2中的方式打开软件的属性——调试界面,设置命令参数

编码时: EncoderApp的命令参数为 -c encoder_intra_vtm.cfg >out.txt
在这里插入图片描述
注:-c 后面的就是3.3.1中设置好的配置文件

>out.txt 是将编码过程中的在控制台界面输出的信息,写入到out.txt中

也可以同时使用多个配置文件写法:-c xxxx.cfg –c xxxx2.cfg
在这里插入图片描述
**第三步:**运行,开始编码,右键EncoderApp——调试——启动新实例

编码结束后会在工作目录中生成.bin和.yuv文件

(若擅长使用VS的控制台界面或者Windows的控制台界面,也可使用控制台界面控制编码,进入到EncoderApp所在的路径,命令为:EncoderApp.exe -c encoder_intra_vtm.cfg >out.txt
在这里插入图片描述
编码结束会在命令行下输出编码后的bit数、YUV、编码时间等信息,为记录方便,生成单独的文件>out.txt。编码结束找到输出文件打开可以看到相关信息,如果没有>out.txt编码时会看到下图:

在这里插入图片描述

3.3.3 编码输出信息

上图是VTM输出在命令行窗口的信息,很多新手都会想知道编码质量在哪看,就在这里,下面大概介绍下 编码输出的信息。
编码结束后输出的信息中给出了编码质量、时间,这也是就是为什么强调用>out.txt保存这些信息。
在当前的工作文件夹生成的.bin文件是码流,在作为解码器的输入文件之一。
首先会输出一些编码的输入参数:

在这里插入图片描述
然后就是在每编完一帧后,会输出一个该帧的编码信息,其中重要的是:POC(对应图像编码顺序的序号,这里POC 0 就是编码第一帧)、TId(对应播放顺序的索引,这里TId 0即播放的第一帧),总比特数,YUV各自的PSNR值。注意因为存在分层B帧结构,因此编码顺序和播放顺序可能不同。

最后就是在编完要求的帧数后输出的总的编码信息,包括全部帧的总bit数、YUV各自及总的PSNR值,以及I、P、B帧的帧数、bit数、YUV各自及总的PSNR值,还有编码时间。I帧、P帧、B帧的概念这里不再赘述。
在这里插入图片描述
论文中在说编码性能时一般会提到BD-rate和编码时间,时间就是这里Total Time,而BD-rate是根据总的bitrate和YUV三通道的PSNR计算得到的,但一般要使用4个QP的测试结果来进行比较,如下图。这里就不再详细介绍BD-rate的具体计算方法。
在这里插入图片描述

3.4解码

在进行如上配置后,正常情况下编码器就能将你指定的yuv测试文件编码为二进制码流文件了。

解码时会用到DecoderApp软件,跟编码时一样先调试生成DecoderApp.exe(可以设置生成文件目录)
在这里插入图片描述
在软件属性——调试 命令参数输入**-b xxx.bin -o deco.yuv**

-b指定输入的二进制码流,即编码输出码流文件,-o指定输出的yuv文件。

设置完毕之后,运行解码器,应该能够解码出deco.yuv文件来了。

解码时一定要将编码时生成的.bin和.yuv文件与DecoderAPP.exe放在同一个目录中
在这里插入图片描述

3.5获取编码结果

解码时会用到DecoderAnalyserApp软件,跟编码时一样先调试生成DecoderAnalyserApp.exe(可以设置生成文件目录)
在这里插入图片描述
补充内容(2020.11.6): 要使用块统计扩展,需要在编译时将宏ENABLE_TRACINGK0149_BLOCK_STATISTICS设置为1。(在VS中搜索全部文档可以搜索到)统计信息在编码段和解码端都可以获取到。 此扩展为测试软件在“dtrace”功能中添加了额外的跟踪通道,主要是以下两个:
D_BLOCK_STATISTICS_ALL:所有的语法元素都将被记录,无论他们是实际编码的还是获得的。
D_BLOCK_STATISTICS_CODED:仅记录将进行编码的语法元素。

在软件属性——调试 命令参数输入-b intra_akiyo_cif.bin --TraceFile=“De_VTM7_intra_akiyo_cif.vtmbmsstats” --TraceRule=“D_BLOCK_STATISTICS_ALL:poc>=0”

–TraceFile=“De_VTM7_intra_akiyo_cif.vtmbmsstats” --TraceRule="D_BLOCK_STATISTICS_ALL:poc>=0"为配置信息,初学阶段先固定这样用。

Analyse时一定要将编码时生成的.bin文件与DecoderAnalyserApp.exe放在同一个目录中
在这里插入图片描述
运行之后会生成文件:De_VTM7_intra_akiyo_cif.vtmbmsstats
在这里插入图片描述

4.编码结果可视化查看

1.下载并安装YUView软件,下载地址:https://github.com/IENT/YUView

2.添加文件步骤

2.1.在软件的右上角Item里右键新建Ovelay Item

3.2将编码生成的.yuv文件和AnalyseserApp生成的.vtmbmsstats文件添加到Ovelay Item里,拖动调整使得.yuv在上,.vtmbmsstats在下

3.3点击Item窗口中的.yuv文件,在YUV File Properties窗口内设置 YUV Format设置.yuv显示格式,如果使用默认cfg配置文件,选择YUV 4:2:0 10-bit LE
在这里插入图片描述

4.点击Overlay Item,在Overlay Properties窗口将Overlay打钩。下面一列打钩的可选择查看的信息
在这里插入图片描述

5.结束

至此,从下载代码到可视化查看CU划分情况和查看编码信息全部结束了。
OVER!!!

  • 36
    点赞
  • 170
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值