本文为媒矿工厂翻译的技术文章

原标题What is Video Encoding or Transcoding – Complete Guide

原作者Krishna Rao

原文链接https://ottverse.com/what-is-video-encoding-transcoding-codecs-compression/

翻译整理:徐鋆

视频编码是研究如何减小视频的大小或比特率,而又不会对人眼感知的视频质量产生不利影响的科学。对视频进行编码以在保持其质量的同时减小其尺寸既是一门艺术,也是一门科学。正如我们将在本文中了解到的那样,这是一个复杂而激动人心的领域,它对视频流和分发产生了巨大影响。
以下是本文将会涵盖的视频编码相关知识:
  • 什么是视频编码?

  • 什么是视频转码及其与视频编码的区别?

  • 视频编码中的质量与比特率(或大小)

  • 视频编码的重要因素——编解码器、比特率、分辨率、时间、GOP、帧类型

  • 视频编码是一门艺术还是一门科学?

让我们开始吧!

什么是视频编码?

视频编码是研究如何减小视频的大小或比特率,而又不会对人眼感知的视频质量产生不利影响的科学。
减小文件的大小称为压缩,而视频则使用一组定义明确且有据可查的数学工具和算法(称为视频编解码器)进行压缩。视频经过压缩后,通常采用的格式(称为比特流)只能由对比特流进行解码的相应软件才能理解。例如,使用H.264 / AVC视频编解码器编码的视频不能被HEVC编解码器解码,反之亦然。
编码视频后,可以客观或主观地判断其质量:
  • 客观指标包括PSNR,SSIM,VMAF,这些是使用数学判断视频质量的指标。(以下链接阅读有关PSNR,VMAF和SSIM的更多信息:https://ottverse.com/calculate-psnr-vmaf-ssim-using-ffmpeg/,以下链接查看easyVMAF的相关信息:https://ottverse.com/vmaf-easyvmaf/,这是用于VMAF计算的便捷工具。)

  • 诸如MOS之类的主观指标涉及强大的人为因素,一群人以0-5的分数对视频进行评分以评估其质量。这也称为黄金眼查看法

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

我们可能会听到人们交替使用术语视频编码和视频转码。虽然通常不会指出,但是两者之间存在细微的差异。
视频编码通常是指压缩原始未压缩视频的过程。而视频转码是指对压缩过的文件进行重新编码,它涉及在编码之前对视频进行解码的步骤。
但是,这两个过程都在最后一步对视频进行编码。
通常,转码器具有很多功能,例如
  • 解码不同的容器格式(mp4, ts)。

  • 使用不同的视频编解码器(例如H.264/AVC, HEVC, AV1, VP9等)解码比特流。

  • 更改视频的分辨率以产生不同分辨率的输出(对于ABR流制作至关重要)。

除了转码,业界还会使用两个术语。
  • Transrating是指改变视频比特率的操作。

  • Transmuxing是指更改容器格式(例如将mp4更改为avi或ts)的操作。

在介绍视频编码和转码之后,现在让我们在下一部分中了解视频编码中最重要的率失真折衷。

视频编码/转码中的质量与比特率

要了解比特率(或视频大小)和视频质量之间的折衷,了解视频压缩的工作原理非常重要。这里不必深入了解质量比特率的取舍,只需要了解一些点。
视频压缩算法具有两项重要功能(在编解码器如H.264/AVC, HEVC, VP9, AV1等中):
  • 使用离散余弦变换(DCT)将视频从像素域转换为频域。

    如果不了解DCT的工作原理,可以查看以下链接:

    https://ottverse.com/discrete-cosine-transform-dct-video-compression/。

  • 使用一种称为量化的技术丢弃许多频域数据(称为系数),同时确保人眼无法感知这种数据丢失。

本质上,在压缩视频时会丢弃一些信息,同时确保视频质量不会受到破坏。
  • 如果重度压缩视频,则会丢失大量信息,并且压缩效果在视觉上是可感知的(视频质量差)。

  • 如果轻度压缩视频,则文件较大,但视频质量好。

这称为视频压缩中的率失真折衷。假设分辨率,比特深度和色度采样,编码时间,硬件等是固定的,则比特率越小,视频质量就越差。
以下两张图是使用H.264/AVC编码的CrowdRun序列的屏幕截图,使用两种不同比特率进行编码,而所有其他参数在编码均保持一致,可以看到这种折衷的体现:

什么是视频编码和转码——完全指南插图

1080p 低比特率

什么是视频编码和转码——完全指南插图1

1080p高比特率

比特率较低的流相比于比特率较高的视频,其视频质量要差。这说明了先前关于率失真折衷的观点。
但是,盲目地认为较低的比特率意味着较差的质量是错误的。如这篇文章所述(https://ottverse.com/bitrate-vs-resolution-video-streaming-compression/),根据内容的性质(卡通、头肩等),降低比特率并不会明显降低视频质量。
现在,让我们了解一些影响视频编码的重要因素,这些因素在进行编码/转码之前应该了解注意。

影响视频编码的重要因素

视频编码和转码涉及许多因素,其中大多数相互影响。例如不能在转码时随意更改视频的分辨率,而忽略调整比特率。
在本节中,让我们看一下生产良好压缩的高质量比特流的一些最重要的因素。

内容性质

并非所有视频都是相同的!每个视频都是独一无二的,并具有其风味,这就是使视频压缩成为一门艺术的原因。压缩高动作NFL视频的设置或调整与辛普森一家(Simpsons)之类的压缩卡通视频所用的设置或调整是不同的。

什么是视频编码和转码——完全指南插图2

容易压缩的视频

什么是视频编码和转码——完全指南插图3

难压缩的视频

对视频进行分类的因素很多,例如:
  • 它包含快速动作运动吗?

  • 有很多草或水(很难压缩!)

  • 快速动作电影(战争还是高速汽车追逐?)

  • 头和肩膀内容,例如新闻和脱口秀节目

  • 卡通,动漫?

  • 内容中是否包含在一个方向上移动的股票代码文本,而电影在另一个方向上移动?

有许多种不同的场景将电影区分开来,工程师可以更好地压缩视频。如果知道影片仅包含平坦区域(例如卡通),则可以分配比快速运动体育剪辑更低的比特率。

视频编解码器


这是定义视频编解码器的方式——视频编解码器是一组工具和算法,旨在压缩视频以实现预定的率失真折衷。视频编解码器通常是通过共同努力构建的,涉及工程师,学术界和行业界(软件和硬件公司)的科学家。
视频编解码器的流行示例是H.264/AVC, HEVC, AV1, VP9, EVC, VVC, LCEVC。
每个编解码器在设计时都有特定的目标。它可能是为了获得比上一代更高的性能,或者是免版税的,或者是引入了一种新的压缩方法(就像LCEVC所做的那样)。
而且,由于每个编解码器的设计和优化都是不同的,因此它们的性能也必然会有所不同。例如,AV1的压缩效率比H.264 / AVC大得多,但比AVC使用更多的时间和资源。而且,这没关系!它只是取决于使用者的需求和资源。
要了解有关视频压缩和编解码器的更多信息,请查看以下文章:
  • LCEVC架构深入探讨:https://ottverse.com/lcevc-mpeg5-part2-low-complexity-enhancement-video-coding-guide/

  • LCEVC与H.264/AVC——增益28%,速度3倍:https://ottverse.com/lcevc-vs-avc-using-ffmpeg/

  • EVC(基本视频编码)简介:https://ottverse.com/guide-to-essential-video-coding-evc-mpeg5-part1/

  • 采访VVC(通用视频编码)的架构师:https://ottverse.com/vvc-vvenc-vvdec-benjamin-bross-adam-wieckowski-hhi/

有关视频编解码器的简单说明,请阅读我们的视频编解码器直观指南:https://ottverse.com/what-is-a-video-codec/。

码率控制模式(CBR,VBR,Capped VBR)

每个编码器都有一个码率控制算法,该算法确定在一段时间内(或GOP)如何使用特定的比特率预算。编解码器中使用的速率控制技术其压缩效率,视频质量和速度产生巨大影响
以下是三种流行的码率控制算法。在此概述文章中,不可能对这三个进行深入讨论,但请继续关注码率控制。
  • CBR或恒定比特率:在牺牲视频质量的同时,平均比特率保持恒定。

  • VBR或可变比特率:视频质量保持恒定,同时允许比特率波动。

  • Capped VBR或带限可变比特率:视频质量保持恒定,同时允许比特率在限制或上限范围内波动。

根据为视频编码/转码选择的模式,编码器将优化质量和比特率或文件大小之间的权衡。

比特率

视频比特率或简称为比特率是每秒传输的视频信息的位数。比特率的单位通常是
  • kbps或每秒千bit

  • mbps或每秒兆bit

开始编码时,通常需要向编码器提供比特率。根据编码模式(CBR, VBR, 2-pass VBR, capped VBR),编码器将使用比特率作为压缩视频的指南。
根据经验,比特率越高,视频质量越高。但是,总会有例外,并且取决于分辨率和内容(慢、快、头肩等),有时增加比特率不会提高视频质量。
有关视频编码中的比特率的更深入讨论,请看以下链接:https://ottverse.com/bitrate-vs-resolution-video-streaming-compression/。

分辨率

视频分辨率是视频宽度乘以视频高度。视频分辨率的度量单位是像素。视频分辨率通常以两种方式表示:
  • 使用视频的高度(例如1080p或720p)。

  • 或提及宽度和高度的值:1920×1080或1280×720。

由于明显的原因,视频的分辨率在编码中起着重要的作用。
  • 高分辨率视频(例如4K)将需要更多的比特和更多的时间进行压缩。

  • 低分辨率视频(360p)将需要较少的比特,并且压缩速度更快

因此,当需要选择编码比特率时,请切记考虑视频的分辨率。有关视频编码中视频分辨率的更深入讨论,请看以下链接:https://ottverse.com/bitrate-vs-resolution-video-streaming-compression/。

编码时间
压缩/编码/转码视频所需的时间是视频编码中的关键因素。不同的情况需要不同的解决方案。
  • 如果是直播流视频,那么就无法每分钟编码一帧视频,这将是灾难性的。而是需要以大约24 fps,50 fps或60 fps实时压缩视频。在这种情况下,编码器通常会牺牲质量以获取速度。

  • 但是,如果仅需要流式传输视频,则可以奢侈地花费数小时来压缩每个小时的视频。在这种情况下,编码器将调整为缓慢压缩,并使用几种复杂的工具来获得更高的压缩效率和更好的视频质量。

例如,在诸如FFmpeg的编码器中具有预定义的设置,称为慢,较慢,非常慢,快速,更快,最快,这些设置指示了编码器在速度,质量和压缩效率之间的权衡。
所以要根据用例(直播或点播)选择编码设置(和速度)。

GOP(图片组)及其长度
图片组(GOP)是具有明确定义顺序的视频帧的集合,它们将按照顺序进行编码/解码和显示。GOP的长度称为深刻影响视频压缩效率,流恢复能力和视频质量。
简而言之,很大的GOP大小通常会带来很高的压缩效率,但视频质量和弹性却很低,反之亦然。

封闭GOP和开放GOP

封闭GOP和开放GOP在视频流中很常见,它们会影响压缩效率,流的错误恢复能力以及ABR流中的可切换性。
  • 顾名思义,封闭GOP对GOP外部的帧是封闭的。 属于封闭GOP的帧只能引用其自身GOP内的帧。

  • 开放GOP与封闭GOP相反,它允许来自开放GOP的帧引用来自另一个GOP的帧。

什么是视频编码和转码——完全指南插图4

为了深入了解封闭GOP和开放GOP及其对视频压缩和ABR流的影响,请参考以下链接:https://ottverse.com/closed-gop-open-gop-idr/。

帧类型(I,P,B帧)

I帧(IDR或关键帧),P帧和B帧的概念是视频编码的基础,它们用于提高流的压缩效率,视频质量和弹性。

  • I帧(关键帧或帧内帧)仅包含使用帧内预测的宏块。

  • P帧代表预测帧,并且除了空域预测之外,还允许使用时域预测来压缩宏块。对于运动估计,P帧使用先前已编码的帧。

  • B帧可以引用在其之前和之后出现的帧。 因此,B代表双向。

什么是视频编码和转码——完全指南插图5

为了深入了解I,P,B帧,以及它们对视频压缩和ABR流的影响,请参考以下链接:https://ottverse.com/i-p-b-frames-idr-keyframes-differences-usecases/。

上下采样工具与算法

虽然我们不会在这里深入研究上/下采样算法,但应记住,这些工具会极大地影响视频的质量。假设输入视频的分辨率为540p,并且您想产生720p的输出,那么您需要一个工具将视频上采样到720p。通过对视频进行下采样,该工具会对视频的质量产生深远的影响——如果效果较好,则输出的视频将看起来不错,否则会遇到很大麻烦。
通常,上采样和下采样工具使用经过深入研究的图像处理滤镜(例如Lanczos或Bicubic滤镜)来创建具有新分辨率的视频。但是,在选择购买或承诺使用编码器/代码转换器之前,有必要对这些工具进行测试。
这样一来,我们就结束了影响视频编码的重要因素列表。尽管不详尽,但它提供了有关注意事项的指南。让我们在下一部分中用视频编码清单对此进行总结。

视频编码清单

在编码视频之前,请注意以下几点。这不是一个详尽的列表,但可以帮助缩小视频压缩的正确参数范围。

  • 了解观众——观众的典型带宽是多少?是否正在通过高速互联网流向城市人口?还是针对互联网速度较慢的农村人口?他们使用固定连接(有线互联网)吗?或者,他们是否一直在移动并且正在使用他们的移动数据流量?

  • 终端用户使用什么设备?他们通常在大屏幕SmartTV上观看电视,还是主要使用手持智能手机?

  • 正在流式传输的内容的性质是什么?它是快速运动电影,体育还是新闻等少运动内容,还是卡通等易于压缩的内容?

  • 手上有多少时间用于压缩视频?直播还是点播?

  • 使用哪个视频编解码器?目标受众的设备是否可以解码H.264/AVC, HEVC, AV1或VP9?

这些只是在对视频进行编码/转码之前起作用的一些因素。相信还有更多,但希望这份清单可以作为一个良好的起点。
现在,让我们看一些用于视频编码和转码的工具和服务。

视频编码和转码工具

在本节中,让我们看一下用于视频压缩/编码/转码的流行工具和服务。有些是付费的,有些是开源的-每个都具有不同的功能和特性。
首先让我们看一下开源视频编码备选项。

FFmpeg(开源)

FFmpeg是迄今为止最流行的视频编码/转码工具。它支持视频解码,与大多数容器格式之间的解复用和复用,更改视频分辨率,并可以在H.264/AVC, HEVC, AV1, VP9等最流行的视频编解码器中进行编码,是一个视频压缩中必不可少的工具。

什么是视频编码和转码——完全指南插图6

有关更多信息,请访问FFmpeg的网站(https://ffmpeg.org/)或浏览OTTVerse上的FFmpeg系列文章(https://ottverse.com/category/ffmpeg/),其中涵盖了视频处理,压缩,打包和播出。

Handbrake(开源)

Handbrake是一种开源视频转码器,被广泛认为是用于视频编码和转码的基于GUI的最佳工具。它支持多平台,使用起来毫不费力,而且涵盖了广泛的预设和设备。这意味着将比以往更轻松地快速压缩视频,而无需花钱购买转换或转码工具,也不必花费数小时来编写命令行参数。有关更多信息,请查看OTTVerse的Handbrake简介文章(https://ottverse.com/install-and-compress-videos-using-handbrake/)。

什么是视频编码和转码——完全指南插图7

付费视频编码工具和服务

有几项付费服务可用于基于云的视频压缩。这些服务通常支持多种容器类型,编解码器和摄取/出口格式,例如RTMP,HLS,DASH等。
下面列出了一些比较流行的服务:
  • Mux.com

  • Encoding.com

  • Wowza.com

  • harmonic 360

  • AWS Elemental

  • QEncode

  • Coconut.co

  • Bitmovin.com

视频编码是艺术还是科学?

在学习了很多有关视频编码和压缩的知识之后,这是一个有趣的哲学问题。视频编码/转码是一门科学还是一门艺术?你怎么认为?
老实说,如果你问我,我想两方面都有。
视频编码是一门科学,因为它具有在全世界的实验室中发明并经过不断测试和改进的精确公式和算法。
另一方面,视频编码是一门艺术,因为对视频质量的感知是主观的,而且不同的人对视频质量的看法也不同。因此,当设置编码器或编码器的压缩工具时,将无法简单地按照某些表中的质量度量和比特率值进行操作!
一位认真的工程师将对他的视频进行编码,并在不同的设置下观看几次,然后确定哪个视频最有可能满足大部分观众的需求。赏心悦目是一门艺术
所以你怎么看?编码艺术还是科学?

结论

我希望这篇关于视频编码和视频转码的文章具有教育意义,并让读者对视频压缩的艺术和科学有所了解。请查看OTTVerse的Compression系列文章,以获取更多信息(https://ottverse.com/category/video-compression/)。

什么是视频编码和转码——完全指南插图8