登录 |  注册 |  繁體中文


HLS的M3U8及TS介绍

分类: 其它 颜色:橙色 默认  字号: 阅读(569) | 评论(0)
HLS(全称:Http Live Streaming)是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。
 
HLS协议应用:
由于传输层协议只需要标准的 HTTP 协议, HLS 可以方便的透过防火墙或者代理服务器, 而且可以很方便的利用CDN进行分发加速, 这样就可以很方便的解决大规模应用的瓶颈。并且客户端实现起来也容易。
 
HLS 目前广泛地应用于点播和直播领域,HLS协议是将音视频流通过HTTP协议传输出去,实现视频直播,HLS协议实现是关键。尤其目前直播领域的手机移动端的直播协议,基本上都是采用了苹果公司的HLS协议。可以说这个协议的出现解决了移动端的直播播放问题。 
 
二、 M3U8文件概念
 
M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。
 
三、 M3U8文件详解
 
如下图所示,客户端播放HLS视频流的逻辑其实非常简单,HLS中的index文件就是m3u8的文件,先下载一级Index file,它里面记录了二级索引文件(Alternate-A、Alternate-B、Alternate-C)的地址,然后客户端再去下载二级索引文件,二级索引文件中又记录了TS文件的下载地址,这样客户端就可以按顺序下载TS视频文件并连续播放。
 
如下,HLS的M3U8文件中bandwidth指定视频流的比特率,PROGRAM-ID无用无需关注,每一个#EXT-X-STREAM-INF的下一行是二级index文件的路径,可以用相对路径也可以用绝对路径。例子中用的是相对路径。这个文件中记录了不同比特率视频流的二级index文件路径,客户端可以自己判断自己的现行网络带宽,来决定播放哪一个视频流。也可以在网络带宽变化的时候平滑切换到和带宽匹配的视频流。
 
#EXTM3U
 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1064000
 
1000kbps.m3u8
 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=564000
 
500kbps.m3u8
 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=282000
 
250kbps.m3u8
 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2128000
 
2000kbps.m3u8
 
如下M3U8文件,二级文件实际负责给出ts文件的下载地址,这里同样使用了相对路径。#EXTINF表示每个ts切片视频文件的时长。#EXT-X-TARGETDURATION指定当前视频流中的切片文件的最大时长,也就是说这些ts切片的时长不能大于#EXT-X-TARGETDURATION的值。#EXT-X-PLAYLIST-TYPE:VOD的意思是当前的视频流并不是一个直播流,而是点播流,换句话说就是该视频的全部的ts文件已经被生成好了,#EXT-X-ENDLIST这个表示视频结束,有这个标志同时也说明当前的流是一个非直播流。
 
#EXTM3U
 
#EXT-X-PLAYLIST-TYPE:VOD
 
#EXT-X-TARGETDURATION:10
 
#EXTINF:10,
 
2000kbps-00001.ts
 
#EXTINF:10,
 
2000kbps-00002.ts
 
#EXTINF:10,
 
2000kbps-00003.ts
 
#EXTINF:10,
 
2000kbps-00004.ts
 
#EXTINF:10,
 
... ...
 
#EXTINF:10,
 
2000kbps-00096.ts
 
#EXTINF:10,
 
2000kbps-00097.ts
 
#EXTINF:10,
 
2000kbps-00098.ts
 
#EXTINF:10,
 
2000kbps-00099.ts
 
#EXTINF:10,
 
2000kbps-00100.ts
 
#ZEN-TOTAL-DURATION:999.66667
 
#ZEN-AVERAGE-BANDWIDTH:2190954
 
#ZEN-MAXIMUM-BANDWIDTH:3536205
 
#EXT-X-ENDLIST
 
四、 播放模式区别与应用场景
 
1. 点播VOD的特点是当前时间点可以获取到所有index文件和ts文件,二级index文件中记录了所有ts文件的地址。这种模式允许客户端访问全部内容。上面的m3u8文件详解例子就是一个点播模式下的m3u8的结构。
 
2. Live 模式是实时生成M3u8和ts文件。它的索引文件一直处于动态变化的,播放的时候需要不断下载二级index文件,以获得最新生成的ts文件播放视频。如果一个二级index文件的末尾没有#EXT-X-ENDLIST标志,说明它是一个Live视频流。
 
五、 工作原理
 
1. 点播M3U8工作原理
 
客户端在播放VOD模式的视频时其实只需要下载一次一级index文件和二级index文件就可以得到所有ts文件的下载地址,除非客户端进行比特率切换,否则无需再下载任何index文件,只需顺序下载ts文件并播放就可以了。
 
2. HLS直播M3U8工作原理
 
Live模式下略有不同,因为播放的同时,新ts文件也在被生成中,所以客户端实际上是下载一次二级index文件,然后下载ts文件,再下载二级index文件(这个时候这个二级index文件已经被重写,记录了新生成的ts文件的下载地址),再下载新ts文件,如此反复进行播放。



姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部