点击上方“LiveVideoStack”关注我们
翻译 | Alex
技术审校 | 李忠
本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
视频压缩
Easy Tech
#004#
视频压缩是视频生产中最重要的组成部分之一。对高质量声影效果(以吸引更多观看者)的需求常常被有限的带宽所阻碍,这是YouTube、Facebook和Vimeo等流媒体服务常常面临的问题。本篇文章将通过一个实际练习来解释视频压缩的重要性。
   为什么要视频压缩?
过去几十年里,视频压缩理所当然成为一个广泛研究的主题。
每一年在视频采集、渲染和显示方面都会有技术上的创新。随之而来的是,各大公司要面临用户希望以相同或者更低成本获得更高质量视频的需求。
换句话说,内容提供商如Netflix、HBO等需要提供更高质量的视频,但同时不能将成本转嫁给用户!遗憾的是,说起来容易做起来难。
每天,全世界有数百万人都在观看视频(以电影、综艺、新闻、体育直播,TikTok短视频等形式)。
但几乎每个人在按下“播放”键时,都忽视了一件事:生产、存储和传输视频的复杂性。人们会站在埃菲尔铁塔前,感叹精巧工艺背后的辛苦工作,但几乎不会有人在按下播放键时,对奇迹般顺利出现在屏幕上的《指环王》最后一部感到惊讶!
事实上,建立视频传输管道,以确保你的观众可以在任意时间、任意地点点播猫咪视频这件事,没有听上去那么简单,而且还不便宜!
视频压缩部分(正式名称为编码器/转码器)是视频采集和传输管道中的关键组成。各大公司花费了大量时间和精力来选择和微调它们的编码器。
但你有没有想过,为什么我们需要在视频传输前先压缩它?需要权衡什么?通过视频压缩我们获得了什么?它的作用可以忽略不计或者可以不压缩吗?
上面的问题问得很好,因为一旦理解了“为什么”,那么一切就都水到渠成了!
在本篇文章中,我们将论证视频压缩的存在,让我们开始吧!
一个像素的成本是多少?
为了存储视频(以及传输视频),你需要为存储设备做预算。现在,先让我们忽略传输层面的事, 只关注存储问题。
存储视频的设备(SSD或者HDD)代表了你的成本。我们的目标是估算存储一个视频(1080p、24fps、色彩-RGB、90分钟长)的花费是多少。
然而,为了了解成本,我们需要先将视频分解成不同组成部分。
视频是由什么组成的呢?答案相当简单。你以为的动态电影,其实是以设定速度向你展示的一组图像!
每张图像被称为“一帧”,电影基本上就是按特定顺序排列的一系列帧。
再深入分析的话,帧由像素构成。
几个按照特定顺序排列的像素构成了一帧。比如,1080p有1920 x 1080个像素,分别排列为1080行和1920列。
再进一步理解,帧可不是简单的2D数组。为了产生色彩效果,(在我们的例子中)我们假设一帧视频有3层,颜色分别是红色、绿色和蓝色。三原色,即红、绿和蓝(RGB)可以组合成任意你想要的颜色。
具有 1920 列和 1080 行像素的单个帧的 RGB 
比如,当红、绿和蓝按照相同比例混合,可以产生不同色度的灰色——从黑色到纯白!这个特性非常有用,它可以使三种颜色在数字显示器(电视或者手机)中产生不同的颜色。 
酷!现在我们知道一帧就是一个3D像素数组,这些像素实际上就是代表了色彩强度的数字(我们例子中的RGB)。
假设你使用8位内存代表一层颜色中的一个像素,那么,为了表示RGB三种颜色的强度,你就需要24位内存。
换言之,我们需要24位大小的空间来存储一个像素。
注意:了解视频技术的读者应该发现了,视频并不是以RGB格式存储的,它们是以YUV格式(420、422或者444)存储的。除此之外,你也知道位深是变化的(每像素8、10或者12位)。然而,在本篇文章中,让我们假设视频是按照RGB格式(8位)存储的。我们将在视频压缩系列的后续文章中介绍不同的颜色、子采样和位深格式。感谢大家“忍受”这个简单的例子!
一个90分钟、1080p的电影需要消耗多少存储空间?
现在我们知道,存储视频的一个像素(RGB)需要消耗24位,让我们来计算一个视频一整帧的消耗。
如果你在观看高清或者1080p的视频,那我们这里讨论的就是每帧1920x1080像素。
所以,一帧的消耗是
1920 * 1080 像素* 24位/像素) = 49766400 位
但我们要看的不是图像,我们想看的是电影!
为了保持动态感(或“欺骗”你的眼睛,让你认为是动态的),你的电视需要每秒显示24帧(fps),否则你的大脑将很快意识到正在看的不是视频。这种现象被称为“视觉暂留”或者“视觉错觉”。
我们知道,24 fps 被认为是最低限度的帧速率(帧速率是视频每秒的帧数)。业界普遍认为 60 fps 是一个很好的标准帧率,我同意。
回归数学
所以,假设我们制作电影时,让电影的每一秒包含24帧,那么一秒的视频需要多少存储空间?
49766400位/帧 x 24fps = 1194393600位/秒
这只是一部电影中的一秒,我们现在讨论的是一段90分钟的视频。那么存储90分钟视频需要多少空间呢?
1194393600x 60(1分钟60秒)x 90(共90分钟)=6449725440000位
哇,让我们整理一下这个数字。
大小=6449725440000 位=806215680000 字节 =787320000 千字节(1KB为1024B)=768867.1875 兆字节(1MB为 1024 KB)= 大约 750 GB( 1 GB为1024 MB )
要用750GB存储一部电影?疯了吧!
 理解750GB
如果你想在一个非常棒的SSD上存储750GB的电影,(假设)那得买一个三星Evo SSD硬盘才行,一个要花费250美元。
会有人愿意花250美元存储一部电影吗?太荒谬了,不是吗?你可能会说,那我们可以使用更便宜的存储技术,但这不是我们今天要讨论的重点。
现实中,视频存储很昂贵,这也是为什么音视频行业不断创新(在不影响视频质量的前提下,持续开发新算法和新技术将电影压缩到更易于管理的尺寸)的原因。
看看你手机上的Netflix应用。Netflix 提供了将电影下载到手机上的选项,这样你在离线时也可以观看。你可以下载一部完整电影(事实上很多电影),而且仍然不会“摧毁”你的手机内存。
你肯定不会去下载几GB或者几TB的数据,是吧?你最多只下载1或者2GB的数据。
这种文件尺寸的大幅减少主要归功于视频压缩的艺术和科学。
 视频编码究竟是艺术还是科学?
说视频编码是科学,是因为它需要精确的公式和算法,而这些公式和算法都是在世界各地的实验室中被发明出来的,并需要接受不断的测试和改进。
另一方面,说视频编码是艺术,是因为对视频编码质量的感知是主观的,不同的人对视频质量好坏的判断不同。
《视频编码完全指南》中,我们知道,当尝试减小视频文件的大小时,质量会下降。对一个人来说,某张图像可能看起来更清晰,而其他人可能认为柔化后的图像也没那么难以忍受。这种满足复杂“视觉品味”的需求使视频压缩既是一门科学又是一门艺术。

致谢
本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:https://ottverse.com/need-for-video-compression/

扫描图中二维码或点击阅读原文
了解大会更多信息
喜欢我们的内容就点个“在看”吧!
继续阅读
阅读原文