记录了 HM 软件的安装过程。
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 16.20,Vitural Stuidio 2019
- 实验设备:Legion Y7000 2019 PG0。
- 操作系统:Windows 10 家庭中文版20H2版本
HM安装步骤及操作说明
Tortoise SVN下载
HM采用SVN进行代码管理,不能直接从网页下载。因此需要利用SVN软件下载。Tortoise SVN下载链接:https://tortoisesvn.net/ 。打开链接后,点击 Download 标签栏,在出现的下载选项中选择合适的版本进行下载。
HM下载
完成上一节的下载后,回到桌面,右键空白处即可看到Tortise SVN选项,如图2所示。点击后进入Repo-browser,在弹出的URL输入框中输入HM的下载地址:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/ 。输入后点击OK,可以获得不同版本的HM软件,如图3所示。选定合适的版本后右击其对应的文件夹,点击Checkout即可下载。
HM安装
完成HM下载后,打开对应的文件夹,进入 build
文件夹,如图4所示。其中包含了不同环境下的编译文件,支持Linux系统和Windows系统。根据电脑中存在的编译环境,选择并打开 HM_vc2015.sln
文件。
打开sln文件后,可以看到解决方案资源管理器中有10个项目,如图5所示。右击 解决方案”HM_vc2015”
,选择 属性
,选择 单启动项目
,单启动项目中选择 TAppEncoder
,如图6所示。此处为对其进行编码。如果需要进行解码,则在单启动项目中应选择AppDecoder
。点击 确定
保存设置。完成后右击 解决方案
,在弹出的菜单栏中点击 生成解决方案
。
生成解决方案成功后,在 HM
文件夹下会生成一个 bin
文件夹。进入 bin
文件夹,看到有一个 vc2015
文件夹。继续进入 vc2015
文件夹,点击 Win32
文件夹,可以看到 debug
文件夹。进入 debug
文件夹,可以看到有两个可执行文件 TAppDecoder.exe
和TAppEncoder.exe
编码配置
完成上述步骤后,回到 Virtual Studio
软件。点击顶部菜单栏中的 调试
,选择 TAppEncoder调试属性
,在配置属性中点击 调试
进行配置。这里需要更改 工作目录
和 命令参数
。在配置工作目录时,需要现在 HM
文件夹下创建一个 workspace
文件夹作为工作目录,再在工作目录中选择新建的 workspace
路径。在命令参数中输入:
-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
文件的内容如下所示。
#======== File I/O ===============
InputFile : E:\HM-16.20+SCM-8.8\workspace\yuv\salesman_qcif.yuv
InputBitDepth : 8 # Input bitdepth
InputChromaFormat : 420 # Ratio of luminance to chrominance samples
FrameRate : 50 # Frame Rate per second
FrameSkip : 0 # Number of frames to be skipped in input
SourceWidth : 176 # Input frame width
SourceHeight : 144 # Input frame height
FramesToBeEncoded : 449 # Number of frames to be coded
Level : 3.1
其中,参数由上至下分别为输入文件路径、位深度、亮度与色度比值、帧率、输入帧跳过帧数、输入帧宽度、输入帧高度以及编码帧数。这些参数需要根据输入的文件进行调整。
完成上述步骤后,就可以对YUV文件进行编码了。
YUV到HEVC的编码过程和结果分析
YUV视频下载
YUV视频可以通过网址 http://trace.eas.asu.edu/yuv/ 进行下载。该网址中还提供了我们所需要的 YUV 视频的各种参数。下载好视频后,将其放在 workspace 的 yuv 文件夹中,并将文件路径和参数更新到 bitstream.cfg 文件中。
HEVC编码
完成5.1节中的操作后,回到 Visual Stuidio
,按下 Ctrl + F5
开始执行。执行后会弹出一个命令行窗口,如图7所示。
完成执行后,在 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/。
5.3 结果分析
使用Elecard HEVC Analyzer打开str.bin文件后,得到的结果如图8所示。左上角选择chart bar可以查看每帧视频码流的分配情况。thumbnails可以查看视频的缩略图以及对应的编码索引和时间索引,左侧可以看到帧级别的统计信息,如色度、格式、分辨率、各类行帧所分配的比特比率等,并可以更换查看vps、sps等其他级别的信息,右侧可以查看cu级别的信息,包括块的位置、尺寸、预测方向等。