美文网首页
HLS协议介绍

HLS协议介绍

作者: smallest_one | 来源:发表于2018-11-27 22:29 被阅读25次

目录

  1. 概述
  2. 诞生的原因
  3. 当前的应用场景
  4. 技术架构
  5. HLS的技术要点
  6. 参考阅读

1. 概述

HTTP Live Streaming(HLS)是苹果公司提出的基于HTTP的流媒体协议。

可实现流媒体的点播和直播,采用了动态码率自适应技术。最初是作为QuickTime, Safari, OS X, iOS软件的一部分,目前广泛地应用于点播和直播领域。

2. 诞生的原因

为什么苹果要提出HLS这个协议

  • 主要是为了解决RTMP协议存在的一些问题。比如RTMP协议不使用标准的HTTP接口传输数据,RTMP是基于UTP传输的协议。在一些特殊的网络环境下可能被防火墙屏蔽掉。HLS由于使用的HTTP协议,可以方便地透过防火墙或者代理服务器。而且可以地方便地利用CDN进行分发加速,而且客户端实现起来也很方便。
  • HLS协议可以实现码率自适应。不同带宽的设备可以自动切换到最适合自己码率的视频播放。
  • 另外于负载,RTMP是一种有状态协议,很难对视频服务器进行平滑扩展,因为需要为每一个播放视频流的客户端维护状态。而HLS基于无状态协议(HTTP),客户端只是按照顺序使用下载存储在服务器的普通TS文件,做负责均衡如同普通的HTTP文件服务器的负载均衡一样简单。

3. 当前的应用场景

其实HLS最大的优势就是他的亲爹是苹果。苹果在自家的IOS设备上只提供对HLS的原生支持,并且放弃了flash。Android也迫于平果的“淫威”原生支持了HLS。

  • iOS从3.0开始成为标准功能。
  • Adobe Flash Player从11.0开始支持HLS。
  • Google的Android自Honeycomb(3.0)开始支持HLS。
  • VODOBOX HLS Player (Android,iOS, Adobe Flash Player)。
  • JW Player (Adobe Flash player)。
  • Windows 10 的 EDGE 浏览器开始支持HLS。
  • HTML5。

4. 技术架构

HLS跟MPEG-DASH协议的原理类似。

HLS是一套解决方案,包括三个部分:Sever, CDN, Client。

以下是HLS整体架构图。


HLS_architecture.png

(1) Server

服务器端将视频数据流编码、封装和切割为连续的、时长很短的MPEG-TS格式的文件,通常一个ts分片大概是10s;并提供一个配套的媒体列表文件(m3u8文件)。

  • 视频封装格式:MPEG-TS。
  • 编码:视频编码为H.264,音频编码为AAC, MP3, AC-3或者EC-3格式。

(2) Distribution

由标准的网络服务器组成,接收客户端的请求和分发所有的资源包括m3u8列表文件和ts分片文件。

(3) Client

客户端先通过下载m3u8文件,再通过m3u8文件的索引地址顺序地拉取ts媒体文件播放。对于直播,它的索引文件一直处于动态变化的,你需要不断的更新索引文件 playlist 然后移除旧的索引文件。

一般为了加快速度,m3u8 放在 web 服务器上,ts 文件放在 cdn 上。

5. HLS的技术要点

  1. M3U8文件

M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

  1. M3U8文件举例

以下是优酷网页版上抓取的一个点播视频的m3u8文件:

#EXTM3U
#EXT-X-TARGETDURATION:12
#EXT-X-VERSION:3
#EXTINF:5.533,
http://103.41.141.97/69768E58FFA34798E1A2220C0/03000A08005A25052B3FE5315660059AF6445B-C8C2-3AA7-D1BC-7A36EC3CC047.mp4.ts?ccode=0502&duration=2989&expire=18000&psid=5311a61ce438b35bc02d799930ffe6df&ups_client_netip=3a1f7431&ups_ts=1512432537&ups_userid=1313610383&utid=kan7ESyrxRkCATofdp0%2BqUUF&vid=XMzIwNDU5MDgwOA%3D%3D&vkey=A6235f86ca611217b5bab2a1872a3d01b&ts_start=0.0&ts_end=5.433&ts_seg_no=0&ts_keyframe=1
#EXTINF:3.4,
http://103.41.141.97/69768E58FFA34798E1A2220C0/03000A08005A25052B3FE5315660059AF6445B-C8C2-3AA7-D1BC-7A36EC3CC047.mp4.ts?ccode=0502&duration=2989&expire=18000&psid=5311a61ce438b35bc02d799930ffe6df&ups_client_netip=3a1f7431&ups_ts=1512432537&ups_userid=1313610383&utid=kan7ESyrxRkCATofdp0%2BqUUF&vid=XMzIwNDU5MDgwOA%3D%3D&vkey=A6235f86ca611217b5bab2a1872a3d01b&ts_start=5.433&ts_end=8.833&ts_seg_no=1&ts_keyframe=1
#EXTINF:6.0,
http://103.41.141.97/69768E58FFA34798E1A2220C0/03000A08005A25052B3FE5315660059AF6445B-C8C2-3AA7-D1BC-7A36EC3CC047.mp4.ts?ccode=0502&duration=2989&expire=18000&psid=5311a61ce438b35bc02d799930ffe6df&ups_client_netip=3a1f7431&ups_ts=1512432537&ups_userid=1313610383&utid=kan7ESyrxRkCATofdp0%2BqUUF&vid=XMzIwNDU5MDgwOA%3D%3D&vkey=A6235f86ca611217b5bab2a1872a3d01b&ts_start=8.833&ts_end=14.833&ts_seg_no=2&ts_keyframe=1

#EXT-X-DISCONTINUITY
#EXTINF:6.934,
http://103.41.141.143/6775BC8D97C3579BE19F330F2/03000A08015A25052B3FE5315660059AF6445B-C8C2-3AA7-D1BC-7A36EC3CC047.mp4.ts?ccode=0502&duration=2989&expire=18000&psid=5311a61ce438b35bc02d799930ffe6df&ups_client_netip=3a1f7431&ups_ts=1512432537&ups_userid=1313610383&utid=kan7ESyrxRkCATofdp0%2BqUUF&vid=XMzIwNDU5MDgwOA%3D%3D&vkey=A237eb2490a741b352c4ad88aa34b7bcf&ts_start=0.0&ts_end=6.834&ts_seg_no=41&ts_keyframe=1
#EXTINF:11.466,
http://103.41.141.143/6775BC8D97C3579BE19F330F2/03000A08015A25052B3FE5315660059AF6445B-C8C2-3AA7-D1BC-7A36EC3CC047.mp4.ts?ccode=0502&duration=2989&expire=18000&psid=5311a61ce438b35bc02d799930ffe6df&ups_client_netip=3a1f7431&ups_ts=1512432537&ups_userid=1313610383&utid=kan7ESyrxRkCATofdp0%2BqUUF&vid=XMzIwNDU5MDgwOA%3D%3D&vkey=A237eb2490a741b352c4ad88aa34b7bcf&ts_start=6.834&ts_end=18.3&ts_seg_no=42&ts_keyframe=1
#EXT-X-ENDLIST

以下是优酷网页版上抓的一个直播视频的m3u8文件:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:2725
#EXT-X-TARGETDURATION:4
#EXTINF:3.000,
golfeuroch1207_yk720/1512818441_20284.ts?auth_key=1544170706-0-0-08e2dcc3fcab2b922b9db6e769766ba4
#EXTINF:3.000,
golfeuroch1207_yk720/1512818444_20285.ts?auth_key=1544170706-0-0-0999e5b3eb9894217595997614046903
#EXTINF:3.000,
golfeuroch1207_yk720/1512818447_20286.ts?auth_key=1544170706-0-0-47621f58b2d0645b9bd30674195041b2

以上面的m3u8文件作为例子

#EXTM3U         每个M3U文件第一行必须是这个tag
#EXT-X-VERSION:3    版本号 
#EXT-X-TARGETDURATION:12    ts分片的最大时长
#EXTINF:5.533,              ts的持续时间(秒)
http://103.41.141.97/xxx.mp4.ts? ts文件的下载地址
#EXT-X-ENDLIST              切片终止标记

#EXT-X-MEDIA-SEQUENCE 
定义当前m3u8文件中第一个文件的序列号,
每个ts文件在m3u8文件中都有固定唯一的序列号,
该序列号用于在MBR时切换码率进行对齐
  • Media Segment:每个Media segment必须包含接着上一个Media segment的尾部内容是连续的,除非明确指明是了是“discontinuities”。

每个Meida segment应该包含足够的内容来初始化一个加密器和解码一个连续的帧序列包含这一片数据的最后一帧。

  • Media Initialization Section: 一些媒体格式需要一个通用字节序列来初始解析器。可以在EXT-X-MAP中描述。

6. 参考阅读

相关文章

  • HLS协议介绍

    目录 概述 诞生的原因 当前的应用场景 技术架构 HLS的技术要点 参考阅读 1. 概述 HTTP Live St...

  • HLS协议介绍

    今天来介绍一下HLS协议,这个协议是由苹果公司提出并推广开来的。来一段维基百科的定义。 HTTP Live Str...

  • hls协议是什么?hls协议详细介绍

    祁聪莹 15310116063 转载自:http://www.elecfans.com/tongxin/yunto...

  • HLS协议相关介绍

    前言: HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协...

  • 9. 【RTMP协议和传输】

    RTMP协议介绍 为了替代RMTP协议,苹果出了一个HLS协议,Adobe已经决定不再维护RTMP协议;目前国内大...

  • HLS协议及TS封装

    HLS协议及TS封装 一、HLS协议 HLS协议由苹果公司提出并推广,来自维基百科的定义。 HTTP Live S...

  • 搭建直播系统并实现h5播放rtmp

    推流只能用rtmp协议,拉流可以使用rtmp协议和hls协议。rtmp协议是adobe公司开发的开放协议,hls是...

  • # HLS 协议详解

    HLS 协议详解 HLS 概述 HLS 全称是 HTTP Live Streaming, 是一个由 Apple 公...

  • 如何生成HLS协议的M3U8文件

    什么是HLS协议: HLS(HttpLiveStreaming)是由Apple公司定义的用于实时流传输的协议,HL...

  • h5直播播放器

    浏览器协议协议h5直播只能播放hls协议,flv协议不支持,rtmp协议不支持pc端浏览器支持hls、flv协议a...

网友评论

      本文标题:HLS协议介绍

      本文链接:https://www.haomeiwen.com/subject/lbfoqqtx.html