HEVC编码之HM学习

简介: HM是HEVC的官方标准测试模型,想要对HEVC进行了解,需要对HM源码进行一定解读才能够更加深入。

欢迎一起学习HM

HM是HEVC的官方标准测试模型,想要对HEVC进行了解,需要对HM源码进行一定解读才能够更加深入。

1.如何下载HM

(1)HM不能直接下载,因为它是采用svn来管理代码的,因此需要利用svn下载,我们这里采用TortoiseSVN,TortoiseSVN的下载地址为:https://tortoisesvn.net/)。
下图是下载截图,有32和64位的,根据自己电脑系统位数下载相应版本。
根据自己电脑系统位数下载相应版本
(2)下载并安装TortoiseSVN,在桌面右击,选择TortoiseSVN,打开repo-browser。然后,在弹出来的URL框填入HM的下载地址:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/。
(3)最后就能看到HM相关文件夹,选择对应版本,右键选择“checkout”即可下载。所发布的HM版本在tags文件夹中

2.搭配HM的运行环境

HM源代码因为是C和C++混合代码,需要IDE打开才能运行,这里选择Visual Studiao,我的电脑装的是Visual Studio 2013。
首先找到自己下载的HM文件夹,然后打开build文件夹,可以看到里面有vs2010~vs2015各个版本的源代码,由于我的电脑是vs2015,我这里打开的是HM_vc2013.sln。
在这里插入图片描述

3.HM生成解决方案

首先,双击打开HM_vc2013.sln,可以看到右侧出现了9个项目。
其中,
(1) TAppCommon 编码器和解码器共用的应用函数
(2) TAppDecoder 解码器的应用函数
(3)TAppDecoderAnalyser 解码器分析的应用函数
(4) TAppEncoder 编码器的应用函数
(5) TLibCommon 编码器和解码器共用的库函数
(6) TLibDecoder 解码器的库函数
(7)TLibDecoderAnalyser 编码器分析的应用函数
(8) TLibEncoder 编码器的库函数
(9) TLibVideoIO 视频输入、输出库函数
在这里插入图片描述
右击 "解决方案'HM_vc2013'(9个项目)" ,选择 "属性",选择单启动项目(S),选择TAppEncoder(这里是对其进行编码,后面如果对其进行解码的话,就选择 TAppDecoder),确定。
在这里插入图片描述
然后,右击“解决方案‘HM_vc2013’(9个项目)”->”生成解决方案”。这里推荐选择Release,win64可选,这样运行会更快。
在这里插入图片描述
生成成功后,在HM16.7下会生成一个“bin”文件夹,在bin\vc2013\Win64\Release中会有2个可执行文件:TAppEncoder.exe和TAppDecoder.exe
在这里插入图片描述

4.HM环境配置

这里只是对编码部分进行配置。
首先,点击”调试“,选择”TAppEncoder属性“。
在这里插入图片描述
在这之前需要在在HM文件夹下创建了一个workspace的文件夹作为工作目录,然后在工作目录栏选择刚刚新建的workspace工作目录路径,
在这里插入图片描述
在命令参数栏中需要填写的是用到的配置文件名,包含2个:
编码器配置文件: encoder_intra_main.cfg,文件路径在你下载的HM文件夹下的cfg文件中。并把该文件复制到workspace中。
在这里插入图片描述
在这里插入图片描述

视频源配置文件:该用于指定输入yuv测试文件,分辨率,待编码帧数等。为了日后使用方便,我们在workspace中新建一个bitstream.cfg的配置文件。配置的编写复制cfg文件夹下per-sequence文件夹中的相应配置即可。并把名字改为bitstream.cfg。
在这里插入图片描述
以下是配置文件:
在这里插入图片描述
在这里插入图片描述
在命令参数最后添加: >out.txt,中间有一个空格,这个是用于输出编码的一些参数。
在这里插入图片描述

5.对YUV视频进行编码

首先需要有一个YUV格式的视频,如果没有YUV格式的视频,下载其他格式的也可以,网上有转换器可以转换成YUV格式,也可以用FFMPEG用命令进行转换,这里提供一个YUV视频下载地址:http://trace.eas.asu.edu/yuv/
下载好视频后,将视频的存放路径复制到刚刚设置的bitstream.cfg文件的InputFile参数后面,里面的参数不能乱改,SourceWidth和SourceHeight对应视频的宽高,FramesToBeEncoded是要编码的帧数,如下:
在这里插入图片描述
在这里插入图片描述

6.运行HM

点击运行,出现如下运行界面,即表示程序正常运行。
在这里插入图片描述
运行结束后,在worksapce中会出现3个文件:str.bin、rec.yuv和out.txt。
其中,
rec.yuv是编码过程中重建的yuv图像。
str.bin是压缩后的二进制码流文件。
out.txt是编码基本信息文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.查看HM生成的bin文件

生成的bin文件可以利用各种工具进行查看,网上可以找到。
这里利用Elecard HEVC Analyzer观察分析str.bin:
打开Elecard HEVC Analyzer,选择刚刚生成的str.bin文件,效果如下图。
在这里插入图片描述

第一次学习HM,希望大家可以一起学习,谢谢!!!

相关文章
|
7月前
|
存储 编解码 缓存
H.264编码
H.264编码
72 0
|
存储 编解码 算法
H.264编码及AAC编码基础 3
H.264编码及AAC编码基础
268 0
|
存储 编解码 算法
H.264编码及AAC编码基础 1
H.264编码及AAC编码基础
147 0
|
存储 编解码 算法
H.264编码及AAC编码基础 2
H.264编码及AAC编码基础
117 0
|
编解码 监控 安全
GB/T28181-2022针对H.265编码细化及技术实现
新版国家标准GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》已于2022年12月30日发布,并将于2023年7月1日正式实施。
151 0
|
机器学习/深度学习 存储 编解码
Opus从入门到精通(八)Opus编码基础之压缩编码
莫尔斯码就是大家熟悉的电报码,它的发明为人类做出了巨大的贡献.该码采用"."和"-"来表示26个英文字母,这实质上还是二进制码(点为"0",而杠为"1"),但是它没有采用固定字长的编码方式,而是采用了常用字母用短码表示(如E用"."表示,T用"-"表示),不常用字母用长码表示(如Z用"--.."表示,j用"-..-"表示)的变长编码方式.通过对英文单词进行大量统计,找出各字母的概率,最后确定有12个字母出现概率最低,用4bit数字表示,有8个字母出现概率较低,用3bit数字表示;有4个字母出现概率较高,用2bit数字表示;有两个字母出现概率最高,用1bit表示,共26个字母.
611 0
|
编解码 算法
白话H.265/HEVC和H.264/AVC编码结构
写在前面 在信息化时代,视频技术和应用的发展,特别是高清(HD)、超高清(UHD)、多视点(MultiView)视频、VR/AR技术的兴起,海量的视频信息已如潮涌般深入到我们工作和生活的方方面面。随着5G通信技术逐渐铺开落地,移动端设备的传输数据量会进一步增加。
2818 0
|
编解码
【H.264/AVC视频编解码技术详解】十五、H.264的变换编码(二):H.264整数变换和量化的实现
《H.264/AVC视频编解码技术详解》视频教程已经在“CSDN学院”上线,视频中详述了H.264的背景、标准协议和实现,并通过一个实战工程的形式对H.
2380 0