一、背景介绍
HTTP Live Streaming是苹果公司提出的一种基于HTTP的流媒体传输协议,自2009年推出以来已成为互联网视频传输的主流标准之一。HLS通过将视频内容分割成小片段(TS文件)和索引文件(M3U8播放列表)来实现自适应码率流媒体传输,具有兼容性好、穿透防火墙能力强等优势。

二、HLS协议概述及工作原理
2.1、HLS基本架构
HLS系统一般由三个主要部分组成:
(1)、服务器组件
负责编码、封装和分割媒体内容。
(2)、分发组件
标准的HTTP网络服务器或CDN。
(3)、客户端组件
负责获取并解码媒体流
2.2、HLS工作流
(1)、媒体文件被编码为合适的格式(通常是H.264视频和AAC音频)
(2)、编码器将媒体分割为一系列小TS文件
(3)、服务器创建并维护包含TS文件引用的M3U8索引文件
(4)、客户端下载索引文件,然后按顺序下载并播放TS文件
三、HLS协议细节解析
3.1、M3U8播放列表格式
M3U8是HLS的核心,它是一种基于文本的播放列表格式,常见的有三种类型:
主播放列表(Master Playlist):包含不同码率的子播放列表
媒体播放列表(Media Playlist):包含实际媒体片段(TS文件)的引用
事件播放列表(Event Playlist):用于直播,持续更新
示例主播放列表:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1500000,RESOLUTION=640x360
medium.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2400000,RESOLUTION=1280x720
high.m3u8
3.2、HLS请求/响应流程
3.2.1、初始请求流程
客户端请求主M3U8文件
GET /streams/master.m3u8 HTTP/1.1
Host: example.com
Accept: application/vnd.apple.mpegurl
2.服务器响应
HTTP/1.1 200 OK
Content-Type: application/vnd.apple.mpegurl
Content-Length: [length]
[M3U8 content]
3. 客户端解析主M3U8,选择合适码率的媒体播放列表
3.2.2、 媒体片段请求
1. 客户端请求选中的媒体播放列表
GET /streams/medium.m3u8 HTTP/1.1
Host: example.com
Accept: application/vnd.apple.mpegurl
2. 服务器响应
HTTP/1.1 200 OK
Content-Type: application/vnd.apple.mpegurl
Content-Length: [length]
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
segment0.ts
#EXTINF:10.0,
segment1.ts
3.客户端按顺序请求TS片段
GET /streams/segment0.ts HTTP/1.1
Host: example.com
<
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END















暂无评论内容