Total Pageviews

Friday, 11 February 2022

视频与编码

从上个世纪末计算机逐渐开始普及,视频(电影)从拍摄、到剪辑、到传播以及呈现都发生了转向数字化的改变,视频编码则是在这其中每一步都凸显的尤为关键。

视频编码(视频编解码器,这里就简称视频编码)的英文名叫 codec 是 encoder 和 decoder 的缩写,我们拍摄、剪辑、转码的时候会将图像的光信号处理后 encoder;在播放的时候又会 decoder 将视频呈现出来。

视频编码与我们平常见到的 .mp4、 .flv 等视频的拓展名并没有必然的联系,这些拓展名格式像一个容器或者说“container”里面往往包含了不同编码的视频、不同编码的音频、图片、字幕、等等都可以。

目前大家接触到比较多的视频编码大体有下面5种:

H.264/AVC

无论是叫 H.264 或者是 AVC 或者 MPEG-4 Part 10, Advanced Video Coding 都是指的这一个。

这是在2003年就由MPEG(Moving Picture Experts Group 动态影像专家组)发布了的至今为止已经有17年历史的视频编码,也是迄今为止最流行最通用的视频编码。H.264 的适应范围非常广,我们不同系统的电脑、浏览器、手机、电视、数码相机、流媒体、播放器、剪辑软件等几乎都有在使用这种编码。

H.265/HEVC

无论是叫 H.265 还是 HEVC (High Efficiency Video Coding )或者 MPEG-H Part 2 指的都是这个编码。

H.265 可以说是 H.264 的继任者,H.265 主要解决了 H.264 的两个问题:

  1. H.265 的效率要高很多,一般相同的画质 H.265 比 H.264 节省了大约一倍的带宽(1080p 下节省了57%左右,4k UHD 更是节省了大约64%的带宽 ),这对于一众流媒体视频网站的诱惑力可以说是十分巨大的,因为视频网站往往有一半甚至更多的开销得花费在带宽上面。不过还是有缺点的,播放 H.265 编码的视频内容的设备需要更好的性能,目前很多设备往往也并不支持 H.265 视频的播放,这时候就要在服务端放两份一份 H.264 的一份 H.265 的然后分发给不同的客户端。
  2. 目前4K已经比较普遍,很多专业设备甚至手机都能拍摄8k的内容,很多8k的电视也已经开卖。而 H.264 最高只支持4k已经不太适合更高质量视频的拍摄、制作、和播放了,H.265 支持8k恰好能满足当前的需求。

最大的坏处是收费,并且更贵了。

VP9

无论是 H.264 还是 H.265 都有一个非常大的问题就是收费,并且非常昂贵,厂商随随便便一用一年就是几百万刀的钱进去了。Google 就想我又有技术又有钱我为啥不自己造个轮子,受这“剥削”干嘛。于是2009年 Google 就花了106.5万刀收购了 On2(视频编码公司)然后很快就推出了 VP8 供大家免费使用,但这个时候天下早已经是 H.264 的,VP8 本身的编码效率也不够好,除了 YouTube 和几家浏览器开始支持外并没有特别大规模的被使用。

索性2010年 Google 就直接又推出了 VP9,目标是直接干 H.265,YouTube、Netflix 等视频网站巨头也都相继支持,主流浏览器除了 Safari 也都支持(这就是你的 Safari 看 YouTube 没有 1080p 以上选项的根本原因),Android 更是从 4.4 就开始支持了。Netflix 曾经做过详细的对比 VP9 相比较 H.265 在1080p往上的分辨率 VP9 还是拥有不小的优势。

AV1

虽然 Google 的 VP9 效果还不错,但是其它几家巨头并不太买单,毕竟在 Google 手里的项目他们也不太放心,苹果就始终未支持 VP9/VP8,很多买了 Apple TV 估计也会因此困恼无法观看4k的 YouTube。然后苹果、亚马逊、思科、 谷歌、英特尔、 微软、Mozilla 以及 Netflix 等共同组建了 Alliance for Open Media(开发媒体联盟)在2018年推出了 AV1(AOMedia Video 1)来共同对抗 H.265。谷歌也贡献出了自己的VP9作为基础,AV1比起VP9又节省了约20%的带宽,依然免版权费。

不过最重要的是这个联盟的号召力,N个公司都加入了这个联盟,像 Netflix 、YouTube 很多也都直接开始分发 AV1 编码的视频了,其它也都陆陆续续开始支持 AV1 了。

 Apple ProRes

与上述几种帧间编码的视频编码不同,多用于专业相机拍摄的编码 Apple ProRes属于帧内编码。“帧内压缩只参考本帧数据,压缩率小;帧间压缩要参考其他帧数据,压缩率大” 。Apple ProRes 这种帧内编码的视频编码的体积会比帧间编码的大很多很多,像一般的数码相机、微单都很少使用这种,因为体积过于庞大。

不过 Apple ProRes 这种帧内编码的好处也是有的,这种编码往往会使用更大的体积保存更多的信息;因为是帧内编码不需要计算出其它的帧在剪辑的时候也会对性能的要求低很多很多,即使配置低的电脑剪辑高分辨率的视频也会流畅很多。

有很多专业级别的拍摄设备都会有自己家类似 Apple ProRes 的编码,甚至有些会记录“无损”的数据,记录更高的质量,方便后期处理。这些专业的拍摄设备一般用户不会接触到,网络视频传播基本也不会使用帧内编码的这类,因为体积实在太大了,非常不利于传播。

如果你对这些感兴趣可以看看:

视频的拍摄

拍摄:大部分设备我们都是没法选择视频录制的编码的,不过 iPhone 可以所以 iPhone 为例。在 设置-相机-格式 可以选高效(H.265 即 HEVC)或者 兼容性最佳(H.264 即 AVC),可以在两个对比图中看出视频编码对体积的影响真的很大。(4k 60fps 只能选择高效即使是兼容最佳模式,个人认为是如果记录 H.264 编码的视频体积会过于庞大对用户非常不友好)

选择高效自然会碰见兼容性问题,你可以参考广告导演 flypig 微博:iPhone 拍下来的素材在 Final Cut Pro X 里花屏 ,碰见这种问题一般你可以选择将 H.265 的素材转成 H.254 或者坚持自己的系统或者剪辑软件是不是最新的。

拍摄、剪辑、和导出上传我自然是门外汉了,推荐你们可以看看影视飓风的这几期视频,讲的很清楚。

视频的分发

相同的电影剧集,看起来清晰不清晰除了和分辨率、码率有关,视频的编码也是非常重要的一部分,也常常被我我们所忽视。

国际上比较主流的视频网站都采用了多种视频编码来应对不同平台和不同的内容甚至不同的网络环境,下面是我个人总结的一些(可能会不完整)

  • Netflix

    Netflix 目前正在使用 4 种不同的编码,分别是

    H.264(AVC):这是 Netflix 使用较多的一种编码格式,在 Safari、iOS、电视客户端等都在使用。

    H.265(HEVC):Netflix 一般仅为 4k 的内容提供 H.265 的编码,并且一般只有在能看 4k 的客户端上使用此编码。我这里说的是 4k 的内容并不是你看 4k 的时候才会使用 H.265 编码,举个例子:你在 firetv 4k 或者 Windows edge 浏览器上观看 《爱尔兰人》等有 4k 版本的内容,即使你观看的分辨率是 480p、或者720p 都会是 H.265 编码的。

    AV1:Netflix 在前几天宣布 Android 上正式开始使用这种编码,在这之前一直使用的是VP9,不过只有在使用流量省数据的选项下才会采用。

    VP9: Netflix 目前在 Android、Chrome 等谷歌系的一直使用这种编码。这里也很容易解释为啥你在 iOS 下载相同的内容和 Android 下载的体积不一样(iOS 客户端下载的普遍体积更小)

  • YouTube

    YouTube 目前主要使用 VP9、H.264、以及 AV1 视频编码,不过值得注意的是 1080p 以上的内容 YouTube 都不会使用 H.264 编码,这也导致了 Apple 全系产品目前没法观看 YouTube 4k,不过 YouTube 已经开始支持 AV1 编码了,AV1 也有苹果的一部分参与,未来几年内应该能解决这个问题。

像 Apple TV+、Disney+ 也都采用了 H.265 在 4k 内容上,并且码率还要比 Netflix 的 16Mbps 要高些许,相比国内爱奇艺、bilibili 只使用 H.264 并且码率也要低很多很多,差距确实十分明显。

如果你也使用 firetv 想看详细播放内容详细信息可以开启开发者模式:

“遥控器:在方向盘上,按住“ 中央”按钮一秒钟;然后(仍然按住居中),也按下“ 向下”按钮。按住两个按钮约3-4秒。然后释放两个按钮,然后按遥控器的菜单按钮。(如果这不起作用,请尝试同时按住“ Center”和“ Down”,而不要交错放置。)”

尾巴

胶片电影时我们的视频时一秒24张照片的魔法,到电视我们的视频是“不稳定”的模拟电信号,到如今我们的视频又是网络中的数字信号。好的内容不会因为传播记录方式而改变,但却能让更多人看到更多更好的内容。

No comments:

Post a Comment