HLS流媒体协议使用详解

一、背景介绍

      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
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容