一,软件下载
HEVC的官方参考软件是HM(HEVC Test Model)。
下载HM需要使用到SVN。
SVN是一个开源的版本控制系统。相当于一个版本控制器加备份服务器。可以回到修改以前某个时刻的版本,也可以在多人之间共享最新的版本。
首先下载TortoiseSVN,https://tortoisesvn.net/downloads.zh.html,安装完后记得重启电脑。
安装完成后在桌面单机鼠标右键,单击tortoiseSVN,再单击export,出现界面:
在URL of repository中输入所要下载HM版本的网址,比如:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-16.0/
在export dirctory中输入你要下载的HM在电脑中的位置。
点击ok后就完成了HM的下载。
使用vs对应的版本打开HM软件即可。
二,HM编解码视频
在...\build中找到vs的工程文件,根据vs的版本打开编解码器。
对于编码器的文件TAppEncoder,右键
点击设为启动项目后,F5编译。
同理:对于解码器的文件TAppDecoder,右键
设为启动项目后,F5调试。
最终在:A:\HM\bin\vc2013\x64\Release
即bin目录下的win32或者x64生成两个可执行文件:
然后我们以编码器为例编码视频:
首先下载一个YUV序列:
https://blog.csdn.net/peixiuhui/article/details/46052199
然后在cfg文件夹中找到几个配置文件。
在vs中TAppEncoder上右键并选择调试,把工作目录改为可执行文件所在的目录
需要使用两个配置文件,即在HM文件夹的cfg目录中的某一个配置文件如encoder_intra_main.cfg,以及per-sequence目录下的某一个配置文件如BasketballDrill.cfg。前者主要用于配置编码器的各种编码参数,后者主要用于指定输入yuv测试文件,分辨率,待编码帧数等。
然后在上图中的命令参数中输入:-c encoder_intra_main.cfg -c BasketballDrill.cfg,表明这个编码器使用这两个配置文件所指定的参数进行编码。
将TAppEncoder设为启动项。ctrl+F5即开始编码。
注意:工作目录指定了编解码可执行文件和cfg文件的目录。视频的目录和名称需要在配置文件中指定,但如果把视频文件也放到工作目录中,那就不用指定视频文件的目录了。以akiyo_cif.yuv为例。
打开BasketballDrill.cfg,根据视频格式更改参数:
主要是输入文件,源高和源宽,akiyo_cif.yuv是cif格式,即352*288,设定也好要编码的帧数。保存。
编码得到:
rec是源文件,str是编码后的码流。
同理把TappDecoder设为启动项,工作目录如上,在命令参数中输入-b xxx.bin -o xxx.yuv,-b指定输入的二进制码流,即编码输出码流文件,-o指定输出的yuv文件。例如这里-b str.bin -o a.yuv。
ctrl+F5
得到最终压缩后的文件:a.yuv
三,数字视频的格式
数字视频:以数字方式记录的视频
有时间分辨率(帧率),空间分辨率(像素),色彩空间(三分量),量化深度等参数
人眼有锥状和杆状两种光敏细胞,锥状有三类细胞,对于红绿蓝三原色最为敏感,不同入射光分别在三类锥状细胞中激发不同的响应,组合成不同的色彩。入射光为照明光源时,感知色彩取决于光源光谱,为反射光源时,取决于光源光谱和物体吸收的光谱。(彩色视觉的三感光细胞原理,色彩恒定,三基色原理)
颜色空间:
RGB:亮度改变,三分量均改变。不适合图像处理
YUV:优化彩色视频信号的传输。U=B-Y V=R-Y
YCbCr:YUV的压缩和偏移版本。
电视荧幕的长宽比=空间分辨率x像素宽高比
隔行扫描(奇偶两场)牺牲了空间分辨率来获取更好的时域流畅性
对模拟视频进行采样方式:色度亚采样==相邻像素点使用相同的色度值(人眼对色度敏感性低) 4:2:2
4:4:4 4:1:1 4:2:0 YCbCr采样格式
数字视频的格式:标清视频格式ITU-R BT.601 高清视频格式ITU-R BT.709 超高清视频格式ITU-R BT.1201,即把模拟信号转换为数字信号时,数字信号所满足的格式,其他标准如CIF QCIF 4CIF等。
HEVC的编码视频格式
视频源-前处理(统一的少数格式)-编码器-信道-解码器-后处理-恢复视频(需要的格式)
上述主要参数位于TcomSlice.h中的TcomSPS,SEI.H等文件。
过扫描:输入图像边缘部分在显示器中不可见