M3U8格式小结
-
Header
EXTM3U
EXT-X-TARGETDURATION:12
EXT-X-VERSION:3
```
-
Footer
#EXT-X-ENDLIST
-
Body
#EXTINF:A, http://ac-gql3ob7p.uu.com/2c6a453bdd824.mp4 #EXTINF:B, http://ac-gql3ob7p.clouddn.com/2c6a453bdd8171b07924.flv #EXTINF:C, http://ac-gql3ob7p.clouddn.com/2c6a453bdd8171b07924.ts
以上是格式结构分解,头部的定义还不是特别清楚,所以找了一个现成的。
通过测试,总结了M3U8格式文件的一些特点。
当播放器播放M3U8的时候,实际上M3U8是一个播放列表,把一些小视频组合在一起播放,理论上只要符合格式要求,里面可以放任何不同的视频格式,只要你当前的播放器支持,只要你里面放的URL正确有效。
当播放器加载一个M3U8的时候,界面计算了视频的总长度,该长度是根据#EXTINF:之后的数字累加而得,也就是说A+B+C。然而播放器在真正开始播放视频的时候,会加载真实视频下的时间,也就是说如果你所有视频长度加起来只有30秒,即使你这里A+B+C结果为30分钟,也就只有刚开始播放器显示30分钟,一旦播放就会显示真实时间。当然,播放器只计算了目前在播放的小片段以及已经缓冲的内容,如果希望得到正确的时间请写正确的时间,有一个小技巧就是,如果你提前知道M3U8的总时间,那就在第一段写上总时间。
通过测试#EXTINF:之后的数字写不写都能通过,但是影响播放体验,不便于进度条逻辑的处理。
M3U8在移动端的支持还是比较好的,iOS和Android原生都支持这种播放形式,在PC端可能要借助各种工具了。
M3U8还有一个最重要的特点,就是必须挂起在网络上播放,所以请至少在本地服务器上挂着,通过http:127.0.0.1/videos/xxx.m3u8来播。
PS:由于地址是网上个人的云空间,所以文中都是改过的地址,不能让读者测试,这点请见谅!如果有新的发现会继续总结。