首页 > 编程知识 正文

视频解码器是什么东西,解码器的功能是

时间:2023-05-05 18:59:20 阅读:61957 作者:1128

1 .是什么?

用于压缩或解压缩数字视频的软件或硬件。 为什么? 人们需要在有限的带宽或存储空间内提高视频质量。 还记得计算每秒30帧、每像素24位和分辨率480x240的视频时所需的带宽吗? 如果未压缩,则为82.944 Mbps。 电视和网络提供的高清/全高清/4k只能依靠视频编解码器。 怎么做? 简要介绍主要技术。

2 .通用编解码器

1 .图像分区

第一步是将帧划分为几个分区、子分区或更多分区。

但是为什么呢? *有很多理由。 例如,在分割图像时,可以更准确地处理预测。 稍微移动的部分使用小分区,静态背景使用大分区。

编解码器通常将这些分区组织为片(或分片)、宏(或编码树单元)和许多子分区。 这些分区的最大大小不同。 HEVC设置为64x64,而AVC使用16x16,但子分区可以达到4x4的大小。

2 .预测

分区完成后,可以在此基础上进行预测。 对于帧间预测,需要发送运动向量和残差; 关于帧内预测,需要发送预测方向和残差。

3 .转换

获取残差块(预测分区-实际分区)后,我们可以通过一种方法对其进行转换。 这样,就可以知道应该丢弃哪个像素,维持整体的质量。 这种正确的行为有几种变换方式。

尽管有其他变换方式,我们仍然关注离散馀弦变换(DCT )。 DCT的主要功能包括:

将像素块变换为相同大小的频率系数块。 通过压缩能量,更容易消除空间冗馀。 可逆的意思是,也可以恢复成像素。 4 .量化

我们舍弃一些系数时,在最后一步(变换),做了一些形状的量化。 在此步骤中,选择性地排除信息(有损耗的部分),或者简单地说,量化系数以实现压缩。

如何量化系数块? 一个简单的方法是均匀量化。 取一个块,将其除以一个值(10 ),然后舍入值。

如何反转(重新量化)这个系数块? 我们可以乘以以前除以的值(10 )。

3 .时间冗馀(帧间预测)。

探索消除时间上的重复吧。 消除这种冗馀的技术是帧间预测。

尝试较少的数据量来编码时间上连续的帧号0和帧号1。

可以做减法。 简单地从0号帧中减去1号帧得到残差。 那样的话,你只需要编码残差。 (全块残差存储)

但是,有更好的方法来节约数据量。 首先,将帧编号0视为一个个块的集合,然后尝试使帧1与帧0上的块匹配。 这可以看作是运动预测。

预计该球将从x=0、y=25移动到x=6、y=26,x和y的值为运动向量。 进一步节省数据量的方法是只对两者的运动向量的差进行编码。 因此,最终的运动向量为x=6(6-0),y=1) 26-25。

实际上,这个球被分成n个分区,但处理过程相同。

框架上的物体三维移动,球移动到背景时变小。 如果尝试查找匹配的块,通常找不到完全匹配的块。

使用运动预测时,可以看到编码的数据量比使用简单的残差帧技术少。

4 .空间冗馀(帧内预测) ) )。

通过分析视频中的所有帧,可以看到很多区域都是相关的。

这是I帧,不能使用前一帧进行预测,但可以压缩。 对我们选择的红色区域进行编码。 看看周围,就能估计周围颜色的变化。

我们预测:帧的颜色在垂直方向上一致。 也就是说,未知像素的颜色与相邻像素相同。

我们的预测是错误的,所以首先需要利用这个技术(帧内预测),减去实际的值来计算残差,得到比原始数据更容易压缩的矩阵。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。