HEVC官方代码环境配置

高效视频编码(HEVC)是ITU-T视频编码专家组(ITU-T Q.6/SG 16) 和 ISO/IEC运动图像专家组 (ISO/IEC JTC 1/ SC 29/WG 11) 成立了视频编码联合协作小组(JCT-VC)来开展该项目。该小组的范围已扩展为继续研究格式范围扩展 (RExt)、可扩展HEVC (SHVC) 和屏幕内容编码 (SCC) 作为 HEVC 的扩展。HEVC 标准的第一个版本于 2013 年 4 月完成。HEVC 的第二个版本,包括RExt、SHVC和MV-HEVC扩展,于 2014 年 10 月完成。包括3D-HEVC扩展在内的第三版HEVC已于 2015 年 2 月完成。

HM

HM(HEVC Test Model)是官方定义的HEVC参考软件,包括编码器和解码器功能。

HM软件有助于帮助视频编码标准的用户建立和测试一致性和可操作性,具有用于教育和展示标准的功能。该软件由ITU-T 视频编码专家组(VCEG,ITU-T 第 16 研究组第 6 题)和 ISO/IEC运动图像专家组(MPEG,ISO/IEC 第 29 分委员会第 11 工作组)联合开发联合技术委员会),由联合视频专家组 (JVET) 维护,该组是 ITU-T 视频编码专家组(VCEG,ITU-T 第 16 研究组的第 6 题)和 ISO/IEC 运动图像专家组(MPEG , ISO/IEC 联合技术委员会 1) 第 29 分委员会第 5 工作组。

HM环境搭建

TortoiseSVN

HM采用SVN进行代码管理,不能直接从网页下载。因此需要利用SVN软件下载。Tortoise SVN下载链接:https://tortoisesvn.net/ 。打开链接后,点击 Download 标签栏,在出现的下载选项中选择合适的版本进行下载。

相关教程链接:https://blog.csdn.net/weixin_45817309/article/details/124938087

只需要参考后半段关于Tortoise SVN下载安装的教程。

HM下载

完成Tortoise SVN的下载后,回到桌面,右键空白处即可看到Tortise SVN选项。

点击后进入Repo-browser(汉化版名称为版本库浏览器),在弹出的URL输入框中输入HM的下载地址:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/ 。输入后点击OK,可以获得不同版本的HM软件。选定合适的版本后右击其对应的文件夹,点击Checkout(汉化版名字为检出)即可下载。

 HM安装

完成HM下载后,打开下载的文件夹,进入build文件夹,里面包含了不同编译环境下的文件夹,我们根据自己的设备和编译环境选择不同的文件,打开HM_vcxxxx.sln文件。(vs2022选择的是2015的文件)

打开方式通常是Visual Studio,因此需要下载该软件。

下载太慢时的解决方案:https://blog.csdn.net/m0_55826602/article/details/127091733

安装时下载太慢可以使用流量,校园网可能会慢。

 VS安装完成后,使用VS打开sln文件,可以看到右侧的解决方案资源管理器中有10个项目,右击 解决方案”HM_vc2015”,选择 属性,选择单启动项目,单启动项目中选择 TAppEncoder。此处为对其进行编码。如果需要进行解码,则在单启动项目中应选择AppDecoder。点击 确定 保存设置。完成后右击 解决方案,在弹出的菜单栏中点击 生成解决方案。

生成解决方案成功后,在 HM 文件夹下会生成一个 bin 文件夹。进入 bin 文件夹,看到有一个 vc2015 文件夹。继续进入 vc2015 文件夹,点击x64文件夹,可以看到 debug 文件夹。进入 debug 文件夹,可以看到有两个可执行文件 TAppDecoder.exe 和TAppEncoder.exe

完成上述步骤后,回到 Virtual Studio 软件。点击顶部菜单栏中的 调试,选择 TAppEncoder调试属性 ,在配置属性中点击 调试 进行配置。这里需要更改 工作目录 和 命令参数。在配置工作目录时,需要现在 HM 文件夹下创建一个 workspace 文件夹作为工作目录,再在工作目录中选择新建的 workspace 路径。在命令参数中输入:

1 -c encoder_intra_main.cfg -c bitstream.cfg> >out.txt

并将 HM 文件夹中 cfg 文件夹里的 encoder_intra_main.cfg 文件复制到 workspace 文件夹下。此外,还需要在 workspace文件夹下新建 bitstream.cfg 文件。bitstream.cfg 文件格式可以直接复制 HM 文件夹中 per-sequence 文件夹下的任意配置文件。bitstream.cfg 文件的内容如下所示。

 1 #======== File I/O =============== 
 2 InputFile                  : E:\HM-16.20+SCM-8.8\workspace\yuv\salesman_qcif.yuv 
 3 InputBitDepth              : 8           # Input bitdepth 
 4 InputChromaFormat          : 420         # Ratio of luminance to chrominance samples 
 5 FrameRate                  : 50          # Frame Rate per second 
 6 FrameSkip                  : 0           # Number of frames to be skipped in input 
 7 SourceWidth                : 176         # Input  frame width 
 8 SourceHeight               : 144         # Input  frame height 
 9 FramesToBeEncoded          : 449         # Number of frames to be coded 
10 Level                      : 3.1

其中,参数由上至下分别为输入文件路径、位深度、亮度与色度比值、帧率、输入帧跳过帧数、输入帧宽度、输入帧高度以及编码帧数。这些参数需要根据输入的文件进行调整。

完成上述步骤后,就可以对YUV文件进行编码了。

YUV编码过程和分析

YUV视频下载

YUV视频可以通过网址 http://trace.eas.asu.edu/yuv/ 进行下载。该网址中还提供了我们所需要的 YUV 视频的各种参数。下载好视频后,将其放在 workspace 的 yuv 文件夹中,并将文件路径和参数更新到 bitstream.cfg 文件中。

HEVC编码

回到 Visual Stuidio,按下 Ctrl + F5 开始执行。执行后会弹出一个命令行窗口。

完成执行后,在 workspace 文件夹下会多出3个文件,分别为 out.txt,rec.yuv,str.bin。out.txt 文件是基本编码信息的输出文件,包含编码后的比特数、编码信息、编码时间等各种信息。rec.yuv 是编码过程中重建的YUV图像。str.bin 是压缩后的二进制码流文件。可以利用 Elecard HEVC Analyzer 软件进行查看,软件下载链接为:https://elecard-hevc-analyzer.software.informer.com/download/。也可以使用GitlHEVCAnalyzer,下载链接为:https://sourceforge.net/projects/gtilhevcanalyzer/

解码分析

我们使用Elecard HEVC Analyzer打开str.bin文件。左上角选择chart bar可以查看每帧视频码流的分配情况。thumbnails可以查看视频的缩略图以及对应的编码索引和时间索引,左侧可以看到帧级别的统计信息,如色度、格式、分辨率、各类行帧所分配的比特比率等,并可以更换查看vps、sps等其他级别的信息,右侧可以查看cu级别的信息,包括块的位置、尺寸、预测方向等。

posted @ 2023-06-25 22:02  划水就完事了  阅读(283)  评论(0编辑  收藏  举报