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级别的信息,包括块的位置、尺寸、预测方向等。