Linux_13:H265

1.H265 的优势和特点

H265编码(也称之为HEVC编码-High Efficiency Video Coding ),它是继H264之后所制定的一个全新的视频编码标准。H265保留了许多H264的技术,并在H264的基础上使用了全新的技术来改善编码质量和画面质量。H265的优势在于超高的压缩比(压缩比高达1:200)编码超高清的分辨率,如:4K分辨率(3840 * 2160)、8K分辨率(7680 * 4320),一般只有在编码超高清分辨率的时候才会用到H265编码,普通的分辨率如:1920 * 1080以下的分辨率只需要H264即可(这是由于H265虽然压缩比非常高,但是它的算法复杂程度也远超H264,对于一般播放器来说CPU运算也过于复杂)。

1.H265 的帧内预测

1.宏块

H265的帧内预测比H264更加灵活,H264帧内预测只支持16 * 16的宏块。但是H265能够支持支持多种尺寸的宏块预测,包括4 * 48 * 816 * 1632 * 32多种宏块的预测。

H264视频文件处理的宏块基本上都是固定16 * 16。而H265视频文件处理的宏块范围就比较广了,从4 * 4到32 * 32的宏块都可以进行编码。那么宏块广泛的好处就是H265编码的细节就会更加清晰,对绝大部分物体都可以进行清晰编码,这一点比H264编码要强。

2.预测模式

除了多种尺寸的宏块预测外,HEVC总共还提供了35种预测模式,对比H264的9种帧内预测模式。H265 的帧内预测模式是H264的4倍以上。

  1. 0:Planner模式,它主要适用于像素变化缓慢区域,它和其他模式相比能够动态调节视频质量
  2. 1:DC 模式,主要适用于大面积平坦区域
  3. 2-34就是33种角度预测,这33种角度模式,相当于33个角度向量的预测。

2.H265 的帧间预测

1.划分方式

在HEVC中,帧间预测单元PU总共有8种划分方式,包括4种对称方式:2Nx2N、2NxN、Nx2N、NxN和4种非对称模式:2NxnN、2NxnD、nLx2N、nRx2N。PU指的是帧间预测的基本单元,每个单元通过帧间预测获得一组运动数据。

2.预测模式

HEVC定义了两种帧间预测模式:分别是帧间模式(inter mode)、合并模式(merge mode)。

1.Merge 模式:

Merge模式会为当前预测单元建立一个MV候选表,在列表中存在着5个候选MV。通过遍历5个候选MV,同时进行失真率计算,最终选择失真率最低的MV作为最优的MV。假设编/解码依旧相同的候选表,编码器只需要传输最优MV索引,这样就可以大幅度节省运动信息传输数。(MV 指的是运动向量)

在空域领域最多提供4个候选MV,最多使用5个候选中的4个候选块的运动信息,如列表所示按照A1-B1-B0-A0的顺序建立起来。这其中B2属于替补位置,当A1、B1、B0、A0中只有一个或者多个不存在的时候,此时就需要用到B2。下面我们来看看,时域候选列表的建立过程,它的过程如下:利用当前PU在邻近已编码图像中找到对应的PU位置的运动信息,相比于空域,时域候选表不能直接使用候选块的信息,它是需要根据参考图像位置来做对应的比例伸缩调整。

curr_PU表示的是当前PU(预测单元)、col_PU表示的是同位PU, td和tb分别表示图像cur_pic、同位col_pic与二者参与图像cur_ref、col_ref之间的距离,当前的PU时域候选

MV计算公式为:curPU = (td/tb)*colPU;

Inter 模式:

Inter模式也称之为AMVP模式(高级运动向量预测-Adaptive Motion Vector Prediction ),它是利用空域、时域上运动变量的相关性,并且为当前PU建立了候选的预测MV列表。HEVC编码器会从中选出最优的预测MV。HEVC编码器从中选择最优质的预测MV,并对MV进行编码。下面我们来看看inter模式如何计算当前PU

从上面这张图我们可以看出,inter处理过程是从空域MV列表5个里面选择2个,时域MV列表2个选择1个,紧接着去除重复的MV,然后填补零矢量(填补0,0),保留候选列表中前2个MV,最后选择出最优MV。

注意:这里要科普两个东西分别是空域和时域

空域: 指的是像素域,换言之空域处理就是在像素级别进行处理,比方说像素叠加等等。

时域: 自变量是时间,换言之横轴是时间,纵轴是信号的变化。

2. H265 重点帧类型的讲解

在H265中,绝大部分的结构都和H264是一样,但是H265码流增加了一个NALU结构,那就是VPS。VPS的主要作用是对传输的视频进行分级,视频分级的最主要作用是有利于兼容标准在多视点视频的扩展,下面是一个经典H265的NALU结构

VPS 视频参数集(NALU:00 00 00 01 40 01 ),VPS主要用于传输视频的分级信息,它用于兼容可分级视频编码和多视点的扩展。H265中加入该结构主要目的是兼容标准在系统多字方面的扩展。

可分级编码主要解决的是++根据网络情况的好坏来判断传输什么类型的数据++,比方说在弱网环境下可分级编码可以使得视频数据只保留基本的信息进行传输,并实时根据网络的情况动态来决定是否传输增强的视频信息从而使得图像质量得以提升。

**SPS:**全称是序列参数集(它的NALU是00 00 00 01 67),它保存了一组编码视频序列的全局参数。

**PPS:**除了序列参数集SPS之外,H264还有另外一个重要的参数集合Picture Parameter Set图像参 数集合(PPS,它的NALU是它的NALU是00 00 00 01 68)

**SEI:**是一种用于视频流传输中的额外附加信息(它在传输的时候可有可无),SEI是H264标准的一部 分。

相关推荐
安科士andxe8 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
小白同学_C11 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖12 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
2601_9491465312 小时前
Shell语音通知接口使用指南:运维自动化中的语音告警集成方案
运维·自动化
儒雅的晴天12 小时前
大模型幻觉问题
运维·服务器
Gofarlic_OMS13 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
通信大师13 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
dixiuapp13 小时前
智能工单系统如何选,实现自动化与预测性维护
运维·自动化
不做无法实现的梦~13 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
Elastic 中国社区官方博客13 小时前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索