这是我HEVC系列的第一篇博客,接触视频编解码知识不久,因而想记录下来学习过程以备随时查看。

HEVC即H265,于2013年正式发布,较之前代H264拥有更好的性能。

首先对于视频编解码的概念:顾名思义,视频编解码就是先将原始视频编码成码流(二进制形式),然后再通过解码还原成图像。此操作的核心即压缩,否则原始视频的直接传输代价太大;不难发现在编码的过程大多数情况实际上是有损的,但是通过相应的方式能够使其拥有良好的效果。同时编码会涉及到预测的随机内容,故而其得到的码流不是唯一的;而同一码流解码得到的视频却必然相同。

 

HEVC编码框架

 

android h265 解码 什么是h265解码_android h265 解码

 

1. 四叉树划分

    和h264将图片划分成多个16*16的宏块不同,hevc采用的是四叉树的自适应的方式,从一个ctu开始,每次划分为四块cu直到8*8的块,比较划分前后的cost来决定是否划分。

2. inter/intra

    在h264中只存在inter(帧间预测);而在hevc中inter和intra(帧内预测)同时存在,并根据二者的比较对相应的块选取适宜的预测方式。

    inter:我们不难发现在视频中,相邻帧在绝大多数情况下的相似度极高,因此可以通过对相邻帧的搜索找到相似度高的块,避免重复编码,减少冗余。即时间相关性。

    intra:在单张图片内,我们可以找到其空间相关性进行帧内预测,例如某一像素点对于相邻点的变化一定是渐进的等等,因而intra是具有极大的可行性的。

3. 变换量化

    hevc在进行DCT变换时一并完成量化,相互结合降低复杂度。

4. 滤波

    由于视频的处理是基于块的,因此块的边缘会出现方块效应,采用滤波可以有效减弱甚至消除方块效应。

5. 熵编码

   就是将在处理中需要保存的数据通过熵编码转化为二进制,即码流。hevc采用的熵编码的方式为cabac。