权威的itef官方文档参见:
https://datatracker.ietf.org/doc/draft-pantos-http-live-streaming/
另外参见苹果官方文档
https://developer.apple.com/streaming/
#EXTM3U //必需,表示一个扩展的m3u文件
#EXT-X-VERSION:3 //hls的协议版本号,暗示媒体流的兼容性
#EXT-X-MEDIA-SEQUENCE:3560 //暗示首个视频分段的sequence number,只能有一个该字段,也可以没有,若没有就假设首个视频分段的sequence number为0
#EXT-X-ALLOW-CACHE:NO //是否允许客户端对下载的视频分段缓存用于以后播放?
#EXT-X-TARGETDURATION:25 //每个视频分段最大的时长(单位秒)
#EXT-X-DISCONTINUITY //暗示当前的视频分段和它之前及之后的视频分段有不同的编码不连续性
#EXTINF:, //每个视频分段都由以下三行信息组成,duration表示该段的时长,以秒为单位,注意最后有个逗号
http:……mp4 //视频分段的地址
#EXT-X-DISCONTINUITY //视频分段结束,如果是最后一个分段,则不需要这一行….. //其他分段的信息,每个分段同样由三行信息组成。
#EXTINF:10,
http://113.108.235.97:80/ipad/160_15607_4578/20130307153030.ts?userid=VSDNNP-183081183068_160_15607_4578#EXT-X-ENDLIST //暗示不再有视频分段加入,可出现在playlist文件的任何地方
嵌套包含的情况:
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000
http://ipad.vsdn.tv380.com/5B63686E5D445830303030303034367C313735397C317C313030307C434354562D357C687474707C74735B2F63686E5D5B74735D307C687474705B2F74735DVSDNSOOONERCOM00/cctv5.m3u8//嵌套定义一个媒体URI作为一个playlist文件,它包括多媒体展示及展示的元信息,必须包括BANDWIDTH
#EXT-X-STREAM-INF:
下面是相关的属性列表:
BANDWIDTH 每个视频分段的总体bitrate的最大值
PROGRAM-ID 唯一定义playlist文件范围里的一个特别的presentation
下面是使用ffmpeg生成的一个m3u8文件的样例
#EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:16 #EXTINF:14.040000, output_file-0.ts #EXTINF:5.960000, output_file-1.ts #EXTINF:11.360000, output_file-2.ts #EXTINF:13.160000, output_file-3.ts #EXTINF:6.000000, output_file-4.ts #EXTINF:12.000000, output_file-5.ts #EXTINF:12.000000, output_file-6.ts #EXTINF:6.160000, output_file-7.ts #EXTINF:12.120000, output_file-8.ts #EXT-X-ENDLIST
来源:https://blog.csdn.net/tao_627/article/details/22407071
m3u8 文件格式详解
https://www.jianshu.com/p/e97f6555a070