首页 > HLS中m3u8格式规范解读

HLS中m3u8格式规范解读

权威的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
#EXTINF:10.560000,
output_file-9.ts
#EXTINF:8.440000,
output_file-10.ts
#EXTINF:12.680000,
output_file-11.ts
#EXTINF:6.000000,
output_file-12.ts
#EXTINF:11.560000,
output_file-13.ts
#EXTINF:11.040000,
output_file-14.ts
#EXTINF:12.840000,
output_file-15.ts
#EXTINF:5.360000,
output_file-16.ts
#EXTINF:14.280000,
output_file-17.ts
#EXTINF:5.840000,
output_file-18.ts
#EXTINF:9.120000,
output_file-19.ts
#EXTINF:12.800000,
output_file-20.ts
#EXTINF:8.640000,
output_file-21.ts
#EXTINF:12.640000,
output_file-22.ts
#EXTINF:5.880000,
output_file-23.ts
#EXTINF:10.360000,
output_file-24.ts
#EXTINF:11.440000,
output_file-25.ts
#EXTINF:8.200000,
output_file-26.ts
#EXTINF:10.000000,
output_file-27.ts
#EXTINF:15.120000,
output_file-28.ts
#EXTINF:4.800000,
output_file-29.ts
#EXTINF:10.920000,
output_file-30.ts
#EXTINF:11.200000,
output_file-31.ts
#EXTINF:8.520000,
output_file-32.ts
#EXTINF:12.000000,
output_file-33.ts
#EXTINF:10.000000,
output_file-34.ts
#EXTINF:11.480000,
output_file-35.ts
#EXTINF:11.120000,
output_file-36.ts
#EXT-X-ENDLIST




更多相关:

  • 经常会有有人问到CMake的学习的问题,而且网上也有很多博客是介绍学习CMake 的用法,但是我觉的学习不用这样死板,用到了就顺便学习一下,也就是边做边学,由浅入深,慢慢的就会熟悉了,这个学习的过程中会遇到很多问题,以解决问题的方式驱动自己学习CMake,首先总结一下CMake 的好处,CMake是一个跨平台编译的工具,所以不再需要折...