美文网首页
HLS的M3U8文件介绍2020-07-16

HLS的M3U8文件介绍2020-07-16

作者: 哟哟哟琳琳 | 来源:发表于2020-07-16 18:20 被阅读0次

    HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。

     相较于实时传输协议(RTP),HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器,它也很容易使用内容分发网络来传输媒体流,因而得到了广泛的应用。

    今天就让我们了解一下HLS中的M3U8文件吧!

    一、HLS与M3U8的关系

    HLS(全称:Http Live Streaming)是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。

    二、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文件,如此反复进行播放。

    相关文章

      网友评论

          本文标题:HLS的M3U8文件介绍2020-07-16

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