实时流式编码如何工作?| 视频编码

实时流编码将实时视频分成较小的块,对其进行压缩,然后通过 CDN 分发视频数据。此流程的更新使实时流式传输变得更快。

学习目标

阅读本文后,您将能够:

  • 了解对视频文件进行编码的原因
  • 了解实时流如何进行编码
  • 了解实时流编码过程的改进如何能减少延迟

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是实时流式传输?

流式传输是一种通过 Internet 传递数据而无需使最终用户完整下载数据的方法。实时流式传输是一种流式传输,其中流是通过 Internet 实时发送的,而无需首先进行录制和存储。

视频游戏流、Periscope 和 Facebook Live 等社交媒体流以及Internet 上专业体育广播都是实时流的示例。尽管音频和视频都可以实时流式传输,但本文将重点介绍实时视频流。

什么是视频编码?

视频编码是压缩视频数据的过程,以便其高效地发送到其他位置。流的接收端设备(例如,用户观看其喜爱的电视节目的平板电脑)对编码数据进行解码。视频编码遵循众所周知的标准,因此各种设备都可以解释编码后的流。

视频编码的必要性源于两大原因:

  1. 未压缩的视频文件通过 Internet 发送的用时太长,无法进行流式传输。
  2. 视频必须采用任何用户设备(智能手机、笔记本电脑和 PC 等)可以解释的格式。

在视频实时流中,设备会获取视听输入并进行编码,然后将其全部发送给观众。此过程的编码部分对于允许各种用户设备接收和播放视频至关重要。

实时流编码如何工作?

从视频源(例如网络摄像头)捕获的实时流发送到服务器,在服务器上,HLS 或 MPEG-DASH 等流协议将视频馈送分割成更小的片段,每一段的长度为几秒钟。

视频内容然后使用编码标准进行编码。如今广泛使用的编码标准称为 H.264,但诸如 H.265、VP9 和 AV1 之类的标准也在使用。此编码过程通过删除多余的视觉信息来压缩视频。例如,在一人以蓝天为背景说话的视频流中,由于变化不大,无需为视频的每一秒重复渲染蓝天。因此,可以从视频的大多数帧中剔除蓝天。

然后,使用内容交付网络(CDN)分发压缩的分段视频数据。若无 CDN,只有很少的观众真正能够加载实时流,本文的最后一部分将说明其原因。

大多数移动设备都具有内置编码器,使普通用户可以轻松地在社交媒体平台上和通过消息传递应用进行实时流式传输。想要质量更高的流的品牌和公司使用自己的编码软件和/或硬件。

新技术如何加快实时流式传输速度?

在许多实时流中,观众仍然会体验到 20 到 30 秒的延迟;换而言之,他们观看的内容比实时落后 20 到 30 秒。部分原因在于,视频的各个片段必须完整加载后才能播放,而且每个视频片段可能需要花费几秒钟来加载。

应对这种延迟的一种解决方案是称为分块编码的过程。此过程通过“分块”进行工作,即将视频片段细分为更小的碎块。然后,对那些较小的碎块进行编码,接收流的设备可以在加载整个片段之前播放这些较小的碎块。

CDN 如何更好地加快实时流式传输?

CDN 对于实时流式传输至关重要,因为 CDN 可以将流分发给位置大不相同的用户。而且,CDN 具有比单一源站服务器更多的带宽来分发流。若无 CDN,实时流可能很容易遇到带宽问题。

但是,大多数 CDN 仍必须加载完整的视频片段,然后才能将其一次性提供给多个用户。这再次引入了分块编码应解决的延迟问题。

为了加快实时流传输,Cloudflare 提供一项功能,称为并发流加速Cloudflare CDN 可以在加载期间仍然将视频片段立即交付给多个最终用户,从而消除了整个片段加载时的等待时间。Cloudflare 全球网络跨越 120 个以上国家/地区的 330 个城市,使世界各地的用户都能收到高质量的实时直播流