HTTP 动态流 (HDS) 是一种使用 HTTP 通过互联网向最终用户传送视频的方法。HDS 不像 HTTP 实时流 (HLS) 等其他流协议那样常用。
阅读本文后,您将能够:
复制文章链接
HTTP 动态流 (HDS) 是 Adobe 开发的一种自适应比特率流式传输方法。HDS 通过 HTTP 连接提供 MP4 视频内容。HDS 可用于点播流式传输或直播。由于它们是通过 HTTP 交付的,因此 HDS 流可以被缓存——通过内容交付网络 (CDN) 或另一个缓存服务器。
HDS 是为与 Adobe Flash Player 和 Adobe AIR 配合使用而开发的。Adobe Flash Player 已停产,现在有一家外部公司支持 AIR 而不是 Adobe。Apple 设备不支持 HDS。
Adobe Flash Player 是一个用于播放视频内容的浏览器插件。多年来,Flash 插件是将视频嵌入网页的最普遍方式。然而,在 HTML5 视频元素发布后,Flash 不再是嵌入式视频的主要选择。此外,Flash 有许多安全漏洞,使其变得危险。(例如,几个 Flash 漏洞允许攻击者在某人的浏览器中执行他们想要的任何代码。)
浏览器和操作系统多年来逐渐放弃了对 Flash 的支持,以避免安全事件。最后,Adobe 在 2020 年 12 月 31 日停止支持 Flash Player。
创建和交付 HDS 流的过程大致如下:
服务器:在通过 HDS 流式传输视频文件之前,必须将它们从常规 MP4 转换为 F4F(分段 MP4)文件格式。F4F 视频文件包含音频、视频和元数据。因为文件是“碎片化的”,所以这三个元素可以彼此分开存储。
HDS 视频使用 H.264 编码,这是一种常见的编码标准。与许多其他流媒体技术一样,HDS 编码多个质量级别的视频文件版本,并将视频分成几秒钟长的较短片段。这使得自适应比特率流式传输成为可能(阅读下文了解更多信息)。
分发:HDS 视频片段被推送到通过互联网请求流的客户端设备。CDN 通常有助于分发流,同时缓存流以更快地提供服务。
客户端:请求流的设备使用包含在元数据中的视频清单文件作为按顺序组合和播放视频片段的参考。它还可以根据需要更改图像质量。
可以把清单文件比作成一套组装飞机模型的说明。这些说明指出了每个部件的位置,使拥有模型套件的人能够自己搭建飞机。
同样,视频的清单文件告诉播放视频的客户端设备(如用户的笔记本电脑或智能手机)如何按顺序组合视频片段、如何加载音频文件、将字幕存储在哪里,等等。这使客户端设备能够正确构建和播放视频。
清单文件存储在视频元数据中。文件的“元数据”是指关于该文件的其他部分的信息。
自适应比特率流式传输是一种技术,允许视频播放器根据网络条件调整视频的质量水平。如果网络连接性能缓慢,播放器会加载质量较低的视频片段,这样可以更快地加载。如果网络连接性能较好,播放器就会以高清晰度加载视频。这些调整在视频播放的同时进行。
自适应比特率流式传输之所以能够实现,是因为流视频被分为几个片段,并以几种不同的质量水平进行编码。因此,播放器可以从多个质量级别中选择每个视频片段。在每个片段之后,播放器可以根据需要切换到一个更高或更低的质量水平。
HDS 使用自适应比特率流式传输,相似的,HTTP 实时流 (HLS) 也是如此。
HLS 是最广泛使用的流协议之一。HLS 最初是由 Apple 公司开发的专有流协议,后来成为一个开放标准。Apple 设备仍然只支持 HLS。
这两种流式传输方法之间的一个重要区别是,HDS 的支持和采用不如 HLS 广泛。截至 2021 年,Apple 占据了全球智能手机市场近四分之一的份额,因此使用 HDS 会减少大量潜在观看者。事实上,HDS 是为与已停产的 Adobe Flash 一起使用而设计的。如今,相对较少的观看者可能拥有可以播放 HDS 流的设备。
Cloudflare Stream 让客户可以轻松上传视频并将其流式传输给世界各地的观众。进一步了解 Cloudflare Stream 支持的视频格式。