什么是 HTTP 实时流式传输?| HLS 流式传输

HTTP 实时流(HLS)是一种广泛使用的视频流协议,几乎可在任何服务器上运行,并且受到大多数设备的支持。HLS 通过提高或降低流的质量,使客户端设备无缝适应不断变化的网络条件。

学习目标

阅读本文后,您将能够:

  • 定义 HTTP 实时流(HLS)
  • 了解 HLS 的工作方式。
  • 探索自适应比特率流式传输的好处

相关内容


想要继续学习吗?

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

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

复制文章链接

什么是 HTTP 实时流(HLS)?

HTTP 实时流(HLS)是使用最广泛的视频协议之一。尽管它称为 HTTP“实时”流,但它同时适用于点播流和实时流。HLS 将视频文件分解为较小的可下载 HTTP 文件,并使用 HTTP 协议来交付。客户端设备加载这些 HTTP 文件,然后将它们作为视频进行播放。

HLS 的一个优点是,所有连入互联网的设备都支持 HTTP,因而它比需要使用专用服务器的流协议更易于实施。另一个优点是 HLS 流可以根据网络状况提高或降低视频质量,而不会中断播放。这就是在用户观看视频的过程中视频质量可能会变好或变差的原因。这个功能称为“自适应比特率视频传输”或“自适应比特率流式传输”,如果没有它,慢速网络条件可能导致视频播放完全停止。

HLS 由 Apple 为 Apple 产品开发,但现在已广泛用于许多设备。

什么是流传输?

流式传输是通过 Internet 向用户传递视频和音频媒体的一种方式。它通过连续地将媒体文件发送到用户设备来工作,一次传输一小部分,而不是一次性传输全部。原始媒体文件可以存储在远程位置,或者在实时流式传输的情况下,可以使用远程摄像机或麦克风实时创建。这样,视频或音频可以开始播放,无需用户的设备预先下载整个文件。

什么是 HTTP?

HTTP 是应用程序层协议,用于在连接到网络的设备之间传输信息。普通用户可以访问的每个网站和应用程序都在 HTTP 上运行。通过 HTTP 传输数据通常基于请求和响应。几乎所有 HTTP 消息都是请求或对请求的响应。

对于通过 HTTP 的流式传输,标准的请求与响应模式并不适用。客户端和服务器之间的连接在流的持续时间内保持开启状态,并且服务器将视频数据推送到客户端,因此客户端不必逐一请求视频数据的每个片段。

HLS 如何工作?

服务器:HLS 流源自于服务器,其中存储了媒体文件(在点播流式传输中)或创建了流(在实时流式传输中)。因为 HLS 基于HTTP,所以任何普通的 Web 服务器都可以发起流。

服务器上发生两个主要过程:

  1. 编码:重新格式化视频数据,以便任何设备都能识别和解析数据。HLS 必须使用 H.264 或 H.265 编码。
  2. 分段:视频分成长度为几秒钟的片段。片段长度可变,但默认长度为 6 秒(2016 年为止是 10 秒)。
    • 除了将视频分割为片段外,HLS 还创建视频片段的索引文件,以记录它们所属的次序。
    • HLS 还会创建几组不同质量等级的重复片段:480p、720p 和 1080p 等。

分发:当客户端设备请求流时,已编码的视频段通过互联网推送到客户端设备。通常,内容交付网络 (CDN) 可以协助将流分发到地理上不同的区域。CDN 还可以缓存流,从而更快地将流提供给客户端

客户端设备:客户端设备是接收流并播放视频的设备,例如用户的智能手机或笔记本电脑。客户端设备使用索引文件作为参考,以正确的顺序组装视频,并根据需要从更高质量影像切换到低质量影像(反之亦然)。

什么是 HLS 自适应比特率流式传输?

HLS 与一些其他流协议相比的优势之一是自适应比特率流式传输。这是指根据网络条件变化而在流的中间调整视频质量的能力。即使网络条件变差,此功能也可以使视频继续播放;相反,它也可以最大化视频质量,达到网络可以支持的最高质量。

如果网络速度变慢,用户的视频播放器会检测到,自适应比特率流式传输就会降低流的质量,从而使视频不会停止播放。如果有更多网络带宽可用,则自适应比特率流式传输将提高流的质量。

自适应比特率流式传输之所以成为可能,是因为 HLS 在分段过程中创建了多个不同质量级别的重复流片段。用户的视频播放器可以在视频播放期间从这些流之一切换到另一个流。

HLS 是否使用 TCP 或 UDP 作为其传输协议?

TCPUDP 是传输协议,即它们负责通过 Internet 交付内容。TCP 交付数据的可靠性一般比 UDP 高,但后者速度要快得多,尽管传输过程中可能会丢失一些数据。

由于 UDP 速度更快,一些流式传输协议使用 UDP 而非 TCP。但 HLS 使用 TCP。这样做有几个原因:

  1. HLS 基于 HTTP,并且 HTTP 协议设计为与 TCP 搭配使用(也有一些例外)。
  2. 现代 Internet 比最初开发流式传输时更加可靠,更加高效。在当今世界的许多地方,用户连接已得到极大改善,尤其是移动连接。因此,用户有足够的带宽来支持每个视频帧的交付。
  3. 自适应比特率流式传输有助于补偿 TCP 潜在的较慢数据交付。
  4. HLS 流式传输并不必须“实时”,例如在视频会议连接中。多几秒的延迟不会像丢失视频帧那样严重影响用户体验。

流式传输通常还使用其他哪些协议?

有许多与 HLS 相似的协议,例如 MPEG-DASH 和 HDS,它们也可以通过 HTTP 运行并提供自适应比特率流式传输。基于 RTMP 协议的 Adobe Flash 一度是视频流式传输的主要技术;不过,许多浏览器已不再支持 Flash。RTMP 仍在使用中,但对它的支持正在下降。

Cloudflare 是否支持 HTTP 实时流式传输?

Cloudflare 支持点播和实时流媒体的 HLS。Cloudflare Stream 将视频存储、编码和可自定义的播放器与快速、安全和可靠的 Cloudflare 网络集成在一起,该网络遍及 120 个国家/地区的 310 个城市。这使世界各地的用户都可以接收快速,高质量的 HLS 流。了解有关 Cloudflare Stream 的更多信息