现实中的播放一般分为直播和点播,两种播放方式获取的m3u8和相关的解析有所区别。
对于点播:
#EXTM3U
#EXT-X-TARGETDURATION:10 >>>>>> 指定最大的媒体段时间长:10秒
#EXT-X-MEDIA-SEQUENCE:0 >>>>>> 每一个media URI 在 PlayList中只有唯一的序号,相邻之间序号+1
#EXT-CHUNKSIZE:652548 >>>>>> 文件块大小
#EXTINF:10,0 >>>>>> 文件编号信息
http://112.29.141.150:6610/120000000003/gslb/program/_ahbyfh-1_/FDN/FDNB4921197/6062839_142911184_0002911184_0000000000_0000652547.ts?Fsv_CMSID=120000000003&ts_min=1&UserID=023160005059523&Fsv_Sd=10&Fsv_MBt=0&srcurl=aHR0cDovLzEyMC4yM
#EXT-CHUNKSIZE:997904
#EXTINF:10,1
http://112.29.141.150:6610/120000000003/gslb/program/_ahbyfh-1_/FDN/FDNB4921197/6062839_142911184_0002911184_0000652548_0001650451.ts?Fsv_CMSID=120000000003&ts_min=1&UserID=023160005059523&Fsv_Sd=10&Fsv_MBt=0&srcurl=aHR0cDovLzEyMC4yM
#EXT-BESTV-CHUNKSIZE:1073856
#EXTINF:10,2
http://112.29.141.150:6610/120000000003/gslb/program/_ahbyfh-1_/FDN/FDNB4921197/6062839_142911184_0002911184_0001650452_0002724307.ts?Fsv_CMSID=120000000003&ts_min=1&UserID=023160005059523&Fsv_Sd=10&Fsv_MBt=0&srcurl=aHR0cDovLzEyMC4yM
.....
#EXT-BESTV-CHUNKSIZE:434092
#EXTINF:10,661
http://112.29.141.150:6610/120000000003/gslb/program/_ahbyfh-1_/FDN/FDNB4921197/6062839_142911184_0002911280_0000966508_0001400599.ts?Fsv_CMSID=120000000003&ts_min=1&UserID=023160005059523&Fsv_Sd=10&Fsv_MBt=0&srcurl=aHR0cDovLzEyMC4yM
#EXT-BESTV-CHUNKSIZE:614948
#EXTINF:7,662
http://112.29.141.150:6610/120000000003/gslb/program/_ahbyfh-1_/FDN/FDNB4921197/6062839_142911184_0002911280_0001400600_0002015547.ts?Fsv_CMSID=120000000003&ts_min=1&UserID=023160005059523&Fsv_Sd=7&Fsv_MBt=0&srcurl=aHR0cDovLzEyMC4yMT
#EXT-X-ENDLIST >>>>>> 表示PlayList的末尾,点播关键的判断点
我们可以看到在点播的方式中,我们会在起播的时候去下载对应的一级m3u8,在一级m3u8中包含了对应该m3u8的所有的ts流片段,具体下载方式要看各自代码的实现方式了,目前有两种比较主流:
(1)起播下载所有ts切片 优点:后续的播控操作会比较流畅,seek,快进快退等
缺点:对系统内存要求比较大,对网速要求较高
(2)边播放边下载 优点:可以有效的降低系统负载和网络的要求
缺点:对播放seek等其他操作会有相应的延迟