hevc编码器怎么使用(视频编码完全指南)

视频编码是一门在减少视频数据体积大小或码率的同时而不对其质量产生不良影响(在人类的视觉感知下)的科学。对视频进行编码从而减少其数据体积同时保持视频质量是一项综合了艺术和科学的技术。在本篇文章中,我们将介绍这个复杂且神奇的领域对视频流和视频传输产生的巨大影响。

 

视频编码Easy Tech

#003#

 

本文我们将会学习:

  • 什么是视频编码
  • 什么是视频转码以及视频转码与视频编码的区别
  • 视频质量VS码率
  • 视频编码中的关键概念:编解码器、码率、分辨率、时间、GOP和帧类型
  • 视频编码是艺术还是科学?

 

什么是视频编码?

 

视频编码是一门在减少视频数据体积或码率的同时而不对其质量产生不良影响(在人类的视觉感知下)的科学。

 

减小文件体积被称为压缩,视频压缩通过一系列定义明确且记录在案的数学工具和算法(被称为视频编解码器)来完成。当对某个视频数据进行压缩,一般来说,压缩后的格式(被称为比特流)只能被可以解码这种格式的相应的软件所理解。比如,一个使用H.264/AVC视频编码器编码的视频是无法被HEVC解码器解码的。

 

当一个视频被压缩,那么就可以从主观和客观上来判断视频质量:

 

客观方法包括PSNR、SSIM、VMAF。这些软件使用数学方法来判断视频质量。

 

主观方法如MOS(Mean Opinion Score, 平均主观意见分),这种方法包含强烈的个人主观色彩,通过一群人为视频打分(0~5分)来确定视频质量。这种方法也被称为“黄金眼观测(Golden-eye viewing)”。

 

什么是视频转码以及视频转码与视频编码的区别

 

你可能经常听到人们交替使用视频编码和视频转码这两个术语。这种做法有失偏颇,因为两者之间还存在细微的差别。

 

视频编码通常指将原始视频数据压缩成编码数据的整个过程。而视频转码是指重新编码压缩文件,但它多了一个编码之前对传入视频解码的步骤。

 

但不要搞混了,这两个过程都需要在最后阶段编码视频。

 

通常转码器有很多功能,比如:

 

  • 解码不同的容器格式(mp4,ts等)。
  • 使用不同的视频编解码器解码比特流,如H.264/AVC、HEVC、AV1和VP9等。
  • 改变视频的分辨率,从而可以输出不同的分辨率(对ABR流制作至关重要)。

 

除了转码,还有两个术语不常在行业中使用:

 

  • Transrate是指改变视频码率。
  • Transmux是指改变容器格式,如将mp4更改为avi或者ts。

 

在介绍了视频编码和转码之后,现在让我们学习下一部分中最重要的率失真折衷(Rate-distortion Trade-off)。

 

视频质量VS视频编码/转码中的码率

 

想要理解码率和视频质量之间的平衡关系,就要先理解视频压缩是如何操作的。你不必深入探究质量与码率的折衷,但你需要明白几件事:

 

视频压缩算法要做两件重要的事(如在H.264/AVC、HEVC、VP9和AV1等编解码器中):

 

  • 使用DCT(Discrete Cosine Transform,离散余弦变换)将“像素域”转换为“频域”。如果你还不了解什么是DCT,可以看下这篇文章(如何给5岁孩子解释DCT?)。
  • 通过一种被称为量化的技术舍弃一些频域数据(被称为系数),同时确保人眼无法感知这种数据丢失。

 

本质上,当你压缩视频时,你需要丢掉一些信息,但同时要保证视频质量没有被破坏。

 

  • 如果你使用过高的压缩率来压缩视频数据,那么将丢掉大量信息,压缩的效果显而易见——糟糕的视频质量。
  • 如果你使用较低的压缩率来压缩视频,那么压缩后文件就会很大,但会得到很棒的视频质量。
  • 上面所述被称为视频压缩中的率失真折衷。码率越小,视频质量越差(假设分辨率、比特位深、色度二次采样、编码时间和硬件等都是固定的。

 

下面两张CrowdRun的屏幕截图说明了这一点,它们分别使用 H.264/AVC 以两种不同码率编码,其他参数在编码过程中保持不变。

1080P,低码率

1080P,高码率

 

低码率流的视频质量要比高码率流的视频质量差,这正说明了我们之前对于率失真折衷的论述。

 

然而,不要误以为较低的码率就意味着较差的视频质量,要依据视频内容的性质而定,降低码率但并不影响视频质量是非常有可能的。

 

在编码和转码之前,让我们来学习一些影响视频编码的重要因素。

 

影响视频编码的重要因素

 

有很多重要因素影响视频编码和转码,并且大部分因素之间也相互影响。比如,在转码时,你不能随便改变视频的分辨率而不去调整码率,对吧?

 

在本节中,让我们来看看一些能够产生压缩充分且高质量的比特流的最重要的因素。

 

内容性质

 

并不是所有创造出来的视频都一样!每个视频都独一无二,都有自己的风格,这就使得视频压缩成为了一门艺术。充满各种动作的职业橄榄球比赛视频背后的各种设置和调整肯定不同于压缩《辛普森的一家》那样的卡通视频,对吧?

非常容易压缩!

没那么容易压缩!

 

影响视频分类的因素有很多,比如:

 

  • 视频里有充满各种动作的体育运动吗?
  • 有大量的草地或者水(二者都很难压缩)吗?
  • 充满各种动作的电影(战争或者高速追车)
  • 露出头部和肩部的内容,比如新闻或者脱口秀
  • 卡通、日本动画?
  • 内容中是否有提示文字(Ticker text)向一侧移动,而电影向着另一侧移动?

 

电影中存在许多不同的场景,这些场景使得每部影片都与众不同,了解了这些,工程师就能更好地压缩视频。如果你知道视频中含有诸如卡通这样的平场区域(Flat region),如上所示,你就可以给它分配一个更低的码率,而不必像处理体育运动视频那样用高码率。

 

视频编解码器

 

我是这样定义视频编解码器的:它们是一组用来压缩视频以达到预定率失真折衷的工具和算法。视频编解码器通常由工程师、学术界和工业界(软件和硬件公司)的科学家组成的委员会来协商创建。

 

现在市面上流行的视频编解码器包括H.264/AVC、HEVC、AV1、VP9、EVC、VVC和LCEVC。

 

每一个编码器在设计时都有一个特定的目标。它们有可能比上一代具有更高的性能,或者免版税,或者推出一种新的压缩方法(像LCEVE那样)。

 

因为每一种编码器都拥有不同的设计和优化方法,它们的性能也必然有所不同。比如,AV1在压缩效率上就比H.264/AVC高出很多,但却比AVC要消耗更多时间和资源。但这些都没有关系,重要的是是否能满足你自己的需求和资源。

 

码率控制模式(CBR、VBR和有上限的VBR)

 

每个编码器都拥有码率控制算法,该算法用于确定在一段时间(或者GOP)内如何消耗码率预算。编解码器中的码率控制技术极大地影响了压缩效率、视频质量和速度。

 

下面是三种常用的码率控制算法。

 

1.CBR(Constant Bitrate,固定码率):在牺牲视频质量的同时,平均码率保持不变。

2.VBR(Variable Bitrate,可变码率):在码率出现波动的同时,视频质量保持不变。

3.Capped VBR(Capped Variable Bitrate,有上限的VBR):视频质量保持不变的同时,允许码率在一定限制或者上限之内波动。

 

根据你为视频编码/转码选择的模式,编码器将在视频质量和码率(或者文件尺寸)之间折衷优化。

 

码率

 

视频码率是指每秒传送信息的比特数。码率单位通常为:

 

  • kbps(千比特每秒)
  • mbps(兆比特每秒)

 

当你开始编码时,你通常需要设置编码器的码率,根据编码模式(CBR、VBR、2-pass VBR和Capped VBR),编码器将使用设置的码率值作为压缩视频的指南。

 

根据经验,码率越大,视频质量越好。但是也有例外,如果调整了视频分辨率和内容(动作快慢,头肩是否出镜),增加码率也有可能不会提高视频质量。

 

分辨率

 

视频分辨率是指视频图像的宽度乘以高度,其中衡量分辨率的单位是像素。视频分辨率通常有以下两种表现形式:

 

1.使用视频图像高度描述分辨率:1080p或720p

2.或者使用图像宽乘高描述分辨率:1920×1080或者1280×720

 

视频分辨率在编码过程中能够发挥重要作用的原因如下:

 

  • 高分辨率的视频(如4K)需要更多内存空间和时间来压缩。
  • 低分辨率的视频(如360p)需要较少内存空间,并且能够很快被压缩。

 

所以,当选择编码码率时,视频分辨率是一个重要的决策因素。

 

编码时间

 

压缩、编码以及转码视频时所需的时间也是一个关键因素。不同环境下有不同的解决方案,对吧?

 

  • 如果你正在视频直播,那么你肯定不能每分钟只编码1帧,那么做将是大灾难!你需要以接近24fps、50fps或者60fps的刷新率来实时压缩视频。在这样的情况下,编码器通常会为了提升速度而牺牲视频质量。
  • 然而,当你在点播视频时,你可以花几个小时的时间来压缩视频。在这样的情况下,编码器被调整为缓慢压缩,并使用复杂的工具来获得更高的压缩效率及更好的视频质量。

 

比如,在FFmpeg这种编码器中,你已经预定义了Slow、Slower,、VerySlow、Fast、Faster和Fastest的设置,而这些设置表明了编码器中速度、质量和压缩效率之间的权衡。

 

所以应该依据视频应用场景(直播还是点播)来选择你的编码设置(和速度)。

 

GOP(一组图像,Group of Pictures)和GOP长度

 

一组图像(GOP)是指一批按照事先定义好的顺序被编码、解码和播放的视频帧。GOP长度对视频压缩效率、视频流恢复能力和视频质量影响深远。

 

简而言之,GOP尺寸越大,视频压缩效率越高,但视频质量和视频流恢复能力也越差,反之亦然。

 

Closed GOP和Open GOP

 

Closed GOP和Open GOP常见于视频流中,并影响压缩效率、视频容错能力以及ABR流的切换能力。

 

  • 顾名思义,Closed GOP对GOP外部的帧是封闭的。一个属于Closed GOP的帧只能参考这个GOP之内的帧。
  • Open GOP与Closed GOP相反,Open GOP内部的帧可以参考其他GOP中的帧。

帧的类型 (I帧、P帧和B帧)

 

I帧、P帧和B帧是视频压缩领域中的基础概念,用于提升视频压缩效率、视频质量和视频恢复能力。

 

  • I帧(关键帧或帧内帧)仅由帧内预测的宏块组成。
  • P帧代表预测帧,除了空域预测以外,它还可以通过时域预测来进行压缩。P帧通过使用已经编码的帧进行运动估计。
  • B帧可以参考在其前后出现的帧,B帧中的B代表双向(Bi-Directional)。



 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 lqy2005888@qq.com 举报,一经查实,本站将立刻删除。