视频为什么可以被压缩?帧内压缩与帧间压缩有何区别?视频编码中的CBR、VBR、CRF...是什么?

简介: 视频压缩基于冗余,包括空间冗余、时间冗余、视觉冗余和编码冗余。帧内压缩利用空间相关性,帧间压缩利用时间相关性。视频编码中的码率控制方法有CBR(固定码率)、VBR(动态码率)、CRF(固定码率系数)、CQP(固定质量参数)、CVBR(约束可变码率)和ABR(平均码率),各有优缺点,适用于不同的场景。

视频为什么可以被压缩?

因为存在冗余。

首先,视频是由一帧帧图像组成的,利用人眼视觉暂留的原理,使人眼产生了运动的感觉。每一帧的图像又由像素构成,分辨率决定了图像细节的精细程度,分辨率越高,像素越高,视频就越清晰,如常见的分辨率1080p就代表这个视频每一帧有1920 x 1080个像素。

冗余为压缩提供了可能性:
1)空间冗余:视频图像在水平方向相邻像素之间、垂直方向相邻像素之间的变化一般都很小,存在着极强的空间相关性。但是基于离散像素采样之后的数字视频来表示物体颜色的方式通常没有利用景物表面颜色的这种空间连贯性,从而产生了“空间过采样”的数据空间冗余。

2)时间冗余:序列图像一般是位于时间轴区间内的一组连续画面,其中的相邻帧,或者相邻场的图像中,在对应位置的像素之间,亮度和色度信息存在着极强的相关性。当前帧的图像往往具有与前、后两帧图像相同的背景和运动物体,只不过移动物体所在的空间位置略有不同,所以后一帧的数据与前一帧的数据有许多共同的地方,对大多数像素来说,亮度和色度信息是基本相同的。对于这些重复出现的画面和物体来说,等间隔的重复产生了“时间过采样”的数据时间冗余。

3)视觉冗余:人眼的一些特性(比如亮度辨别阈值、视觉阈值)对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来,可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。

4)编码冗余(信息熵冗余):人们用于表达某一信息所需要的比特数总比理论上表示该信息所需要的最少比特数要大,它们之间的差距就是编码冗余,或称信息熵冗余。

视频压缩正是基于上述条件,使得视频数据量得以极大地压缩,更利于传输和存储。

帧内压缩与帧间压缩有何区别?

帧内压缩(利用空间相关性进行编码

帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,达不到很高的压缩比。如压缩 GOP 图像组中的 I 帧。
640.png

9种预测

帧间压缩(利用时间相关性进行编码)
帧间压缩(Interframe compression)也称为时间压缩(Temporal compression),是基于许多视频或动画的连续前后两帧具有很大的相关性(即连续的视频其相邻帧之间具有冗余信息)的特点来实现的;通过比较时间轴上不同帧之间的数据实施压缩,进一步提高压缩比。如压缩 GOP 图像组中的 B 帧与 P 帧。
640 (1).png

帧间压缩的主要过程先进行宏块查找,寻找出残差值,进行运动矢量计算,最后通过残差值和运动矢量推算出下一帧的数据。

宏块查找:查找帧之间有差别的部分,算法有:三步搜索,二维对数搜索,四步搜索,钻石搜索等;残差值:是指帧之间有差别的部分;运动矢量:当前编码块与其参考图像中的最佳匹配块之间的相对位移,也就是变化部分下一帧与上一帧的位移;运动估计:针对当前块从上一帧中搜索最相似的块;运动补偿:通过残差值和运动矢量推断出下一帧的数据。

视频编码中的CBR、VBR、CRF...是什么?

在视频编码中,有一个模块是码率控制,即通过选择一系列编码参数,使得视频编码后的比特率满足所需要的速率限制,并且使编码失真尽可能小。在实际应用中,存在好几种码率控制方法,分别是CBR、VBR、CRF、CQP、CVBR、ABR:

· CBR(Constant Bitrate,固定码率)

即在码率统计时间内保证编码码率平稳。有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳定。优点是压缩速度快,缺点是每秒流量都相同容易导致空间浪费。多用于网络流媒体视频编码,持续的码率可以保证视频在播放时,不会有卡顿缓冲等现象。

· VBR(Variable Bitrate,动态码率)

即允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。码率可以随着图像的复杂程度的不同而变化,因此其编码效率比较高,Motion发生时,马赛克很少。码率控制算法根据图像内容确定使用的比特率,图像内容比较简单则分配较少的码率,图像内容复杂则分配较多的码率,这样既保证了质量,又兼顾带宽限制。这种算法在画质相同的前提下,可以缩小文件体积。

· CRF(Constant Rate Factor,固定码率系数)

使用 CBR 和 VBR 时,需要选择一个目标码率,编码器会调整视频质量以达到该目标。这种方法的问题是,如果你对所有视频片段使用了相同的码率阶梯,那么就会在容易编码的视频上浪费很多不必要的带宽。

所以,当使用 CBR 和 VBR 编码时,编码器会调整所需的视频质量进而达到目标码率。相比之下,使用 CRF 编码,选择一种目标质量,编码器会通过调整码率达到该质量水平。CRF 值分布为从 0 到 51,一般来说这个取值越小,视频帧编码质量相对越高,取值为0则是无损压缩。

· CQP(Constant QP,固定质量参数)

每一帧图像在压缩的时候,采用相同的QP值。(QP值决定了量化编码时从像素宏块的原始信息中丢弃多少信息,QP越大压缩率越高同时质量越低,QP越小压缩率越低同时质量越高)

· CVBR(Constrained VariableBit Rate)

VBR的一种改进,兼顾了CBR和VBR的优点:在图像内容静止时,节省带宽,有Motion发生时,利用前期节省的带宽来尽可能地提高图像质量,达到同时兼顾带宽和图像质量的目的。这种方法通常会让用户输入最大码率和最小码率,静止时,码率稳定在最小码率,运动时,码率大于最小码率,但是又不超过最大码率。

· ABR(Average Bitrate,平均码率)

平均比特率,VBR的一种插值参数,是在CBR和VBR两者之间的一种权衡,即设定一段时间的平均码率,在此时间内,对简单、静态的图像分配低于平均码率的码率,对于复杂、大量运动的图像分配高于平均码率的码率;适合网络传输。

相关文章
|
存储 编解码 监控
视频基础知识 3
视频基础知识
589 0
|
存储 缓存 网络协议
Linux系统之ARP命令的基本使用
【7月更文挑战第2天】Linux系统之ARP命令的基本使用
602 3
|
12月前
|
存储 编解码 算法
微帧WZ-JPEG图片编码压缩技术,实现超高压缩效率
在数字化时代,图像数据爆炸式增长,对传输和存储提出巨大挑战。JPEG作为互联网上最广泛应用的图片格式之一,占据超过60%的市场份额。微帧WZ-JPEG编码压缩技术通过优化DCT变换、量化及熵编码等步骤,实现了显著的压缩效率提升,平均节省27%的图片体积,复杂场景下可达40%,同时编码速度提升4倍,确保了高质量图像的快速加载与传输,极大提升了用户体验。此外,微帧还针对WebP、HEIF和AVIF等格式进行了专门优化,进一步彰显其在图像处理领域的技术优势。
|
存储 编解码 算法
微帧科技:综合多项指标评价视频质量,才能更接近主观感受
视频质量评价指标如PSNR、SSIM和VMAF是衡量画面质量的重要工具,但不应成为视频工作者的唯一目标。微帧致力于优化画质,提升观看体验,强调综合评估指标,以实现最接近人眼主观感受的效果。本文探讨了PSNR avg.MSE与PSNR avg.log的区别,以及VMAF的优势与不足。
|
机器学习/深度学习 存储 编解码
微帧Per-Title编码技术:自适应码率-画质-分辨率
Per-Title编码技术由Netflix提出,旨在为每部电影量身定制合适的码率阶梯,以节省带宽和存储成本。传统固定码率阶梯在某些视频类型上存在浪费,Per-Title通过分析视频内容的复杂度,生成最优的码率-质量曲线,确保在有限带宽下提供最佳视频质量。微帧的Per-Title技术进一步优化了这一过程,通过智能算法和深度学习,为每个视频选择最合适的分辨率和码率组合,实现高效传输和优质观看体验。
|
编解码 算法
为什么受损的视频数据通常显示为绿色?为什么很多30帧/秒的视频实际都是29.976帧/秒?
视频编码采用YUV格式因其亮度与色度分离,利于压缩且兼容黑白显示;受损视频常显绿色因YUV转RGB时Y、U、V为0导致;30帧/秒视频实为29.976帧/秒源于NTSC标准适应彩色电视需求;H.264等标准中H无特定含义,H.264又名MPEG-4 AVC,是ITU-T与ISO/IEC MPEG合作成果。
|
编解码 人工智能 自然语言处理
结合微帧编码引擎,从视频编解码角度对Sora浅析
2024年初,OpenAI发布的视频生成模型Sora成为焦点。Sora能生成长达1分钟的高质量视频,标志着生成式AI的重大突破。微帧分析了Sora的视频编码技术,发现其主要使用H.264编码,微帧的编码引擎WZ264和WZ265能显著降低视频码率,提升效率。
阿里云公网IP地址多少钱一个?
阿里云公网IP价格因地域而异,如华北1(青岛)包年包月约20.70元/月,华北2(北京)及其他地区23元/月,香港30元/月,新加坡23元/月。按量付费模式下,保有费0.020元/小时,流量额外计费。
3952 0
阿里云公网IP地址多少钱一个?
USB Type-C引脚解析 && CC、DFP、UFP、DRP用途解析
USB Type-C引脚解析 && CC、DFP、UFP、DRP用途解析
|
并行计算 Shell 异构计算
win10安装RStudio报错
在Windows 10上安装RStudio 2023.12.0-369后,启动时遇到GPU过程启动失败错误(error_code=18)。系统显示NVIDIA GeForce RTX 4070显卡及CUDA Version 12.4。为解决问题,尝试以`--no-sandbox`参数启动RStudio:`"C:\Program Files\RStudio\rstudio.exe" --no-sandbox`,应用此方法后问题得到解决。
492 0