【HTTP Live Streaming】(二)HLS 架构 && 部署 - 梳理

一、宏观

       从概念上讲,HTTP Live Streaming由三部分组成:服务器组件,分发组件和客户端软件。如图:  

       在典型配置中,硬件编码器接收音频 - 视频输入,将其编码为HEVC视频和AC-3音频,并输出分段的MPEG-4文件或MPEG-2传输流。然后,软件流分段器将流分成大量短媒体文件,这些文件放在Web服务器上。分段器还创建并维护包含媒体文件列表的索引文件。索引文件的URL在Web服务器上发布。客户端软件读取索引,然后按顺序请求列出的媒体文件并显示它们,而段之间没有任何暂停或间隙。

 

二、组件介绍

      1.服务端组件

        服务器组件负责获取媒体的输入流并以数字方式对其进行编码。 它将它们封装成适合传送的格式,并准备封装的介质以便分发。

        对于直播事件,服务器需要媒体编码器,它可以是现成的硬件,或者由apple或者三方提供的软件,来将编码媒体分段并保存为文件。

 

      2.分发组件

        分发组件可以是Web服务器或Web缓存系统,它通过HTTP将媒体文件和索引文件传递给客户端。传送内容不需要自定义服务器模块,并且Web服务器上通常只需要很少的配置。要实际部署HTTP Live Streaming,您需要在浏览器创建HTML页或者创建客户端app作为client端。 您还需要使用Web服务器和将实时流编码为包含HEVC或H.264视频以及AAC或AC-3音频的分段MPEG-4媒体文件的方法。您还需要使用Web服务器以及一种方法,将实时流编码为碎片化MPEG-4媒体文件,包含HEVC or H.264 视频, 以及AAC或 AC-3 音频。

 

      3.客户端组件

       客户端软件负责确定要请求的适当媒体,下载这些资源,然后重新组装它们,以便可以连续的流形式向用户呈现媒体。 客户端软件包含在iOS 3.0及更高版本中以及安装了Safari 4.0或更高版本的计算机上。(vincent addition:windows上也可以直接使用)

       客户端软件首先使用标识流的URL获取索引文件。 反过来,索引文件指定可用媒体文件,解密密钥和可用的任何备用流的位置。 对于选定的流,客户端按顺序下载每个可用的媒体文件。 每个文件都包含一个连续的流段。 一旦下载了足够数量的数据,客户端就开始向用户呈现重组流。

       客户端负责获取任何解密密钥,验证或呈现用户界面以允许验证,并根据需要解密媒体文件。

       此过程将继续,直到客户端在索引文件中遇到EXT-X-ENDLIST标记。 如果不存在EXT-X-ENDLIST标记,则索引文件是正在进行的广播的一部分。 在正在进行的广播期间,客户端定期加载新版本的索引文件。 客户端在更新的索引中查找新的媒体文件和加密密钥,并将这些URL添加到其队列中。

 

三、部署基本的http live stream

     1)3点前置需求

1.浏览器的HTML页面或充当接收器的客户端应用程序;
2.用作主机的Web服务器或CDN;
3.一种将源素材或直播流编码为包含HEVC或H.264视频和AAC或AC-3音频的分段MPEG-4媒体文件的方法。 (虽然您可以将MP3音频文件或MPEG-2传输流用于H.264视频,但不建议使用这些格式。)

     2)创建html页面

       分发HTTP直播流媒体的最简单方法是使用M3U8播放列表文件作为视频源,创建包含HTML5 <video>标签的网页。 对于不支持HTML5视频元素的浏览器或不支持HTTP Live Streaming的浏览器,您可以在<video>和</ video>标记之间添加回退代码。 例如,您可以使用QuickTime插件回退到渐进式下载电影或RTSP流。以下示例显示了基本网页的HTML代码:

<html>
    <head>
        <title>HTTP Live Streaming Example</title>
    </head>
    <body>
        <video src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" height="300" width="400">
        </video>
    </body>
</html>

        3)配置web服务器

        HTTP Live Streaming可以由普通的Web服务器提供。 正常配置Web服务器,并将提供的文件的MIME类型与其文件扩展名相关联。 下表显示了HTTP Live Streaming的MIME类型:

File ExtensionMIME Type
.m3u8vnd.apple.mpegURL
.tsvideo/MP2T
.mp4video/mp4

       如果Web服务器受MIME类型的限制,可使用MIME类型为audio / mpegURL提供以.m3u结尾的文件来实现兼容。

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

       若需要缩短M3U8文件的生存时间(TTL)值,以实现下游Web缓存的正确缓存行为。 在实况广播期间经常覆盖M3U8文件,并且应为每个请求下载最新版本。  对于VOD,索引文件是静态的,只下载一次。

        4)验证http live stream

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

        参考后续博客内容,工具介绍:

Media Stream Segmenter
media file segmenter
Media Subtitle Segmenter
variant playlist creator
Media Stream Validator
HLS Report
id3 tag generator

       5)http安全密钥

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

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

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

       这些是使用HTTPS为HTTP Live Streaming提供密钥的要求:

       1.验证HTTPS服务器上是否具有由受信任的颁发机构签名的SSL证书。如果没有,您仍然可以通过为服务器创建自签名SSL证书颁发机构和叶证书来测试您的设置。将证书颁发机构的证书附加到电子邮件,将其发送到要用作Live Streaming客户端的设备,然后点击Mail中的附件以使设备信任该服务器。

       2.确保密钥文件的身份验证域与第一个播放列表文件的身份验证域相同。实现此目的的最简单方法是从HTTPS服务器提供主播放列表文件 - 主播放列表文件下载一次,因此这不会造成过多的负担。可以使用HTTP提供其他播放列表文件。

       3.启动您自己的对话框以供用户进行身份验证,或将凭据存储在客户端设备上。 HTTP Live Streaming不提供用于身份验证的用户对话框。如果您正在编写自己的客户端应用程序,则可以存储基于cookie或HTTP的凭据,并在连接(_:didReceive :)回调中提供它们。您提供的凭据将被媒体播放器缓存并重用。

       hls密钥的demo及学习可参考这里:https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Intro/Intro.html#//apple_ref/doc/uid/TP40012862

 

四、词汇积累

off-the-shelf

encapsulates / encapsulated 

assemble

decryption keys

consecutive

encryption

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值