VVC编码程序入门超详细教程

您所在的位置:网站首页 成长作文1000字 VVC编码程序入门超详细教程

VVC编码程序入门超详细教程

#VVC编码程序入门超详细教程| 来源: 网络整理| 查看: 265

VVC编码程序入门超详细教程——VTM从源码下载到编码CU划分结果可视化 1.源码下载 源码下载网址:https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM

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

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

在这里插入图片描述

下载的文件很多可能都是.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_TRACING和K0149_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!!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3