HLS流媒体协议简介

1、工作原理

HLS协议的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。

2、简述

在服务器端,流媒体文件被切割成一个一个的小分片,这些小分片有着相同的时长(常用10s),每一个小分片是一个ts文件。同时 产生一个索引文件(m3u8),索引文件里存放了ts文件的URL。

客户端请求方式分两种,一种是点播(vod),一种是直播(live)

vod:客户端一次获取整个m3u8文件,按照里面的URL获取ts文件,采用HTTP协议。

live:由于M3u8文件时实时更新的,所以客户端每隔一段时间获取m3u8文件,再根据里面的URL获取ts文件,采用HTTP协议。

3、HLS的请求流程

  • 1 http 请求 m3u8 的 url。
  • 2 服务端返回一个 m3u8 的播放列表,这个播放列表是实时更新的,一般一次给出5段数据的 url。
  • 3 客户端解析 m3u8 的播放列表,再按序请求每一段的 url,获取 ts 数据流。

4、索引文件(m3u8)格式

(1)主索引

#EXTM3U //每一个m3u8文件的第一句必须是这个tag,起标示作用

#EXT-X-VERSION:3 // 用于标示协议版本

#EXT-X-STREAM-INF : [attribute=value][,attribute=value]* <URI>

标签的属性列表中直接指明当前流是VIDEO还是AUDIO

属性 :

BANDWIDTH 指定码率

PROGRAM-ID 唯一ID (这个属性在后面的协议版本废除了)

CODECS 指定流的编码类型

#EXT-X-STREAM-INF:PROGRAM-ID=1,PUBLISHEDTIME=1462118775,CURRENTTIME=1462155858,BANDWIDTH=400000,RESOLUTION=854x480

30647_JIjP2_400/index.m3u8?Dnion_vsnae=30647_JIjP2

 

(2)子索引

#EXTM3U

#EXT-X-VERSION:3

// 每一个media URI 在 PlayList中只有唯一的序号,相邻之间序号+1

(上面那个URL, 不断请求的过程中能不断获取子索引, 每一次获取下来的都能发现EXT-X-MEDIA-SEQUENCE会不断增大)

#EXT-X-MEDIA-SEQUENCE:5647 //指明了出现在播放列表文件中的第一个URL的序列号

//每一份媒体文件的时间, 以秒为单位, 这里是10秒一份

#EXT-X-TARGETDURATION:10

//#EXTINF <duration>,<title>

// 每一份媒体文件的详细信息, duration : 媒体持续时间, 应该四舍五入为整数,上面的例子,9.560就是这一份媒体文件以秒为单位的持续时间

//title : 1462167932532_1462167932532.ts?Dnion_vsnae=30647_JIjP2这个是这一份媒体文件的URL地址,

#EXTINF:9.560,1462167932532_1462167932532.ts?Dnion_vsnae=30647_JIjP2

#EXTINF:6.520,1462167942133_1462167942133.ts?Dnion_vsnae=30647_JIjP2

#EXTINF:9.960,1462167948685_1462167948685.ts?Dnion_vsnae=30647_JIjP2

 

写清楚一点就是如下:

#EXTM3U m3u文件头

#EXT-X-MEDIA-SEQUENCE 第一个TS分片的序列号

#EXT-X-TARGETDURATION 每个分片TS的最大的时长

#EXT-X-ALLOW-CACHE 是否允许cache

#EXT-X-ENDLIST m3u8文件结束符

#EXTINF 指定每个媒体段(ts)的持续时间(秒),仅对其后面的URI有效 mystream-12.ts

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值