02_部署基本 HTTP 实时流式处理 (HLS) 流

概述

HLS 流可以是实时的,也可以是点播 (VOD)。部署 HLS 流的要求如下:

创建 HTML 页面

分发 HLS 媒体的最简单方法是使用 <video> M3U8 播放列表文件作为视频源,创建一个包含 HTML5 标签的网页。对于不支持 HTML5 视频元素的浏览器或不支持 HLS 的浏览器,我们可以在 <video></video> 标记之间包含回退代码。例如,我们可以使用 QuickTime 插件回退到渐进式下载影片或实时流处理协议 (RTSP) 流。下面的示例演示基本网页的 HTML 代码。

<html>
    <head>
        <title>HTTP 实时流式处理示例</title>
    </head>
    <body>
        <视频 src=“http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8” 高度=“300” 宽度=“400”>
        </video>
    </body>
</html>

配置 Web 服务器

HLS 流可以从普通的 Web 服务器提供。配置 Web 服务器,并将所提供文件的 MIME 类型与其文件扩展名相关联。下表显示了 HLS 的 MIME 类型。

文件扩展 MIME类型
.m3u8 vnd.apple.mpegURL
.ts video/MP2T
.mp4 video/mp4

如果我们的 Web 服务器在 MIME 类型方面受到限制,则可以提供以 MIME 类型结尾.m3u的文件 音频/mpegURL 以实现兼容性。

索引文件通常很长,并且经常重新下载,但由于它们是文本文件,因此可以非常有效地压缩它们。通过启用 M3U8 索引文件的实时 gzip 压缩来减少服务器开销。HTTP 实时流式处理客户端会自动解压缩压缩的索引文件。

我们可能需要缩短 M3U8 文件的生存时间 (TTL) 值,以实现下游 Web 缓存的正确缓存行为。M3U8 文件在直播期间经常被覆盖,每个请求都应下载最新版本。请咨询我们的内容交付服务提供商以获取具体建议。对于 VOD,索引文件是静态的,仅下载一次,因此缓存不是一个因素。

验证你的流

媒体流验证器工具是用于验证 HLS 流和服务器的命令行实用程序。

媒体流验证器模拟 HLS 会话,并验证索引文件和媒体段是否符合 HLS 规范。它执行多项检查以确保可靠的流式传输。如果发现任何错误或问题,将显示详细的诊断报告。始终在提供新流或备用流集之前运行验证器。

通过HTTPS安全地提供关键文件

通过加密保护我们的媒体。文件分段器和流分段器工具都具有加密选项,我们可以将它们配置为定期更改加密密钥。我们与谁共享密钥取决于我们。

密钥文件需要初始化向量来解码加密媒体。初始化向量可以定期更改,就像键一样。目前对媒体进行加密同时最小化开销的建议是每 3 到 4 小时更改一次密钥,并在每 50 Mb 数据后更改初始化向量。

即使对密钥的访问受到限制,如果密钥文件是通过 HTTP 发送的,窃听者也可能获取密钥文件的副本。此问题的一种解决方案是通过HTTPS安全地发送密钥。在尝试通过 HTTPS 提供密钥文件之前,请测试通过 HTTP 从内部 Web 服务器提供密钥。这允许我们在将 HTTPS 添加到组合之前调试设置。一旦你有一个已知的工作系统,你可以切换到HTTPS。

使用 HTTPS 为 HLS 提供密钥的要求是:

示例级加密格式记录在 HTTP 实时流的 MPEG-2 流加密格式中。为了获得最强大的内容保护级别,直接通过HTTPS提供密钥的替代方法是使用FairPlay流。