了解使用 HLS 实时和点播音频和视频内容交付的要求。
有关 HLS 中可用功能的更深入讨论,请参阅 Apple 的流媒体资源页面,其中包含指向概述文档、HLS 规范、技术说明、工具、演示文稿和示例的指针。
HLS 规范是一个已发布的 RFC (RFC 8216)。然而,HLS在不断发展,所以有一个更新的规范草案——draft-pantos-hls-rfc8216bis(HLS2)。本文档始终使用最新版本的标准草案。
注意
HLS最初是在draft-pantos-http-live-streaming(HLS1)中指定的。该文档已被 RFC 8216 取代。
本文档中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应该”、“不应”、“推荐”、“可以”和“可选”应按照 RFC 2119 中的说明进行解释。
有关 HLS 规范的更多信息,请参阅 Apple 设备的 HTTP 实时流式处理 (HLS) 创作规范附录。
符合这些要求的流应与 iOS、tvOS 或 macOS 兼容。带有前导星号 (*) 的规则由下面列出的一个或多个修订要求修改。
对特定视频配置文件和级别的支持并不意味着任何特定设备都支持该级别的最大比特率。
1.1. 所有视频必须使用 H.264/AVC 或 HEVC/H.265 进行编码。
1.2. H.264 视频的容器格式必须是分段的 MP4 (fMP4) 文件或 MPEG 传输流。
1.3.
1.3a. 为了获得最大兼容性,某些 H.264 变体应小于或等于 4.1 级高调。
1.3b. * H.264 的配置文件和级别必须小于或等于高配置文件,级别 5.2。
1.4. 对于 H.264,您应该优先使用高配置文件,而不是主配置文件或基线配置文件。
1.5. HEVC 视频的容器格式必须是 fMP4。
1.6.
1.6a. 为了获得最大的兼容性,某些 HEVC 变体应小于或等于主 10 配置文件,级别 4.0,主层。
1.6b. HEVC 的配置文件、级别和层必须小于或等于主 10 配置文件,级别 5.1,高级。
1.7. 高动态范围 (HDR) HEVC 视频必须是 HDR10、HLG 或杜比视界。
1.8. 对于 HDR10 视频,SEI NAL 单元(即静态元数据)应位于 HEVC 配置框 ('hvcC') 中,而不是在单个样本数据中。
1.9. 杜比视界的配置文件和电平必须是配置文件 5(单层 10 位 HEVC)且小于或等于级别 7。
1.10. 您应该使用视频格式,其中参数集存储在样本描述中,而不是样本中。(也就是说,使用“avc1”、“hvc1”或“dvh1”而不是“avc3”、“hev1”或“dvhe”。
1.11. 为了向后兼容,内容不应使用高于内容分辨率和帧速率要求的级别。
1.12. 为了向后兼容,某些视频内容应使用 H.264 编码。
1.13. 关键帧 (IDR) 应每两秒出现一次。
1.14. 所有隔行扫描源内容必须去隔行扫描。
1.15. 您应该将 30i 内容反隔行扫描为 60p 而不是 30p。
1.16. 来自 NTSC 或 ATSC 源的实时(线性)视频应为 60 或 59.94 fps。
1.17. 来自 PAL 源的实时(线性)视频应为 50 fps。
1.18. 视频点播 (VOD) 内容应为内容使用自然帧速率。支持帧速率 23.976、24、25、29.97、30、50、59.94 和 60 fps。
1.19. 不得使用高于 60 fps 的帧速率。
1.20. * 对于 HDR 内容,应提供小于或等于 30 fps 的帧速率。
1.21. 流应使用单一颜色空间 — Rec. 601、Rec. 709、DCI-P3 或 Rec. 2020 之一。
1.22. 对于 VOD,色彩空间应该是材质的原始色彩空间。
1.23. * 如果提供多个视频流(H.264、HEVC、HDR),则每个流应提供所有预期的带宽。不应要求客户端切换编解码器。
1.24. 为了向后兼容,必须提供 SDR 流。(另见第 6.16 项)。
1.25. * 变体有很多可能的比特率选择。下表提供了一组可能的比特率变体。
16:9 宽高比 | H.264/AVC | 帧速率 |
---|---|---|
416 x 234 | 145 | ≤ 30 fps |
640 x 360 | 365 | ≤ 30 fps |
768 x 432 | 730 | ≤ 30 fps |
768 x 432 | 1100 | ≤ 30 fps |
960 x 540 | 2000 | 与源帧率相同 |
1280 x 720 | 3000 | 与源帧率相同 |
1280 x 720 | 4500 | 与源帧率相同 |
1920 x 1080 | 6000 | 与源帧率相同 |
1920 x 1080 | 7800 | 与源帧率相同 |
16:9 宽高比 | HEVC/H.265 30 fps | HDR (HEVC) 30 fps | 帧速率 |
---|---|---|---|
640 x 360 | 145 | 160 | ≤ 30 fps |
768 x 432 | 300 | 360 | ≤ 30 fps |
960 x 540 | 600 | 730 | ≤ 30 fps |
960 x 540 | 900 | 1090 | ≤ 30 fps |
960 x 540 | 1600 | 1930 | 与源帧率相同 |
1280 x 720 | 2400 | 2900 | 与源帧率相同 |
1280 x 720 | 3400 | 4080 | 与源帧率相同 |
1920 x 1080 | 4500 | 5400 | 与源帧率相同 |
1920 x 1080 | 5800 | 7000 | 与源帧率相同 |
2560 x 1440 | 8100 | 9700 | 与源帧率相同 |
3840 x 2160 | 11600 | 13900 | 与源帧率相同 |
3840 x 2160 | 16800 | 20000 | 与源帧率相同 |
16:9 宽高比 | MV-HEVC SDR 30 fps | MV-HEVC HDR 30 fps | 帧速率 |
---|---|---|---|
640 x 360 | 246 | 272 | ≤ 30 fps |
768 x 432 | 510 | 612 | ≤ 30 fps |
960 x 540 | 1020 | 1241 | ≤ 30 fps |
960 x 540 | 1530 | 1853 | ≤ 30 fps |
960 x 540 | 2720 | 3281 | 与源帧率相同 |
1280 x 720 | 4080 | 4930 | 与源帧率相同 |
1280 x 720 | 5780 | 6936 | 与源帧率相同 |
1920 x 1080 | 7650 | 9180 | 与源帧率相同 |
1920 x 1080 | 9660 | 11900 | 与源帧率相同 |
2560 x 1440 | 13770 | 16490 | 与源帧率相同 |
3840 x 2160 | 19720 | 23630 | 与源帧率相同 |
3840 x 2160 | 28560 | 34000 | 与源帧率相同 |
注意
上述比特率是通过 HLS 交付的典型内容的初始编码目标。Apple 建议您根据特定内容和编码工作流程评估它们,然后进行相应调整。
30i 源内容被视为具有 60 fps 的源帧速率。24 fps HEVC 内容应使用比上述值降低约 20% 的比特率。
1.26. 对于 VOD 内容,平均段比特率必须在平均带宽属性的 10% 以内。(请参阅声明的带宽值与测量值。
1.27. 对于 VOD 内容,测得的峰值比特率必须在带宽属性的 10% 以内。
1.28. 对于实时(线性)内容,长时间(~1 小时)内的平均段比特率必须小于平均带宽属性的 110%。
1.29. 对于实时(线性)内容,测得的峰值比特率必须小于 BANDWIDTH 属性的 125%。
1.30. 对于 VOD 内容,峰值比特率不应超过平均比特率的 200%。
1.31. 不同的变体可能有不同的帧速率。
1.32. * 默认视频变体应为 2000 kbit/s(平均比特率)变体。(默认值是具有兼容音频的一组变体中多变体播放列表中列出的第一个变体)。
1.33. 所有视频变体都应具有相同的宽高比。
1.34. 为了在提供超高清视频分辨率时实现最大兼容性,某些超高清变体应小于或等于 15 Mbit/s。
1.35. 对于 HDR10 内容,应显示母带显示颜色体积和内容亮度级别信息 SEI 消息。