我需要有关HLS流式传输的帮助,我正在尝试创建用于流式传输的播放列表,
我正在使用ffmpeg生成文件和.m3u8文件。为了播放,我正在使用带有videojs播放器的网页
这个想法是使用已经创建的文件来模拟实时流。
问题在于,在某些版本的iphone中可以使用,而在另一个版本中则无法使用。问题是,当我开始在手机的Safari浏览器中播放视频时,它会冻结一段时间,然后下载并播放最后一段。
例如,如果视频分为4个不同的.ts文件。它从第4个.ts文件开始播放,然后停止。
问题是我有2部iphone手机,其中一部可以正常使用,而另一部则不能
无法正常工作的手机是iPhone 6(版本9.2.1)
这是我的m3u8文件。请注意,我使用的是#EXT-X-PLAYLIST-TYPE:EVENT,并且已从botton中删除了#EXT-X-ENDLIST。因此,应将其作为实时流播放。
它适用于其他手机,当我设置#EXT-X-START:TIME-OFFSET = 0时,它从0秒开始
但在此版本(9.2.1)中,视频冻结,然后跳到最后一个片段(webinar-3.ts)播放该片段并最终停止。
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:NO
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-START:TIME-OFFSET=0
#EXT-X-TARGETDURATION:6
#EXTINF:5.046444,
webinar-0.ts
#EXTINF:5,
webinar-1.ts
#EXTINF:5,
webinar-2.ts
#EXTINF:5,
webinar-3.ts
有谁知道我在做什么错或如何获得适用于此iPhone版本的m3u8配置?
根据HLS规范的第6.3.3节:
如果EXT-X-ENDLIST标签不存在,并且客户端打算正常播放媒体,则客户端不应选择从播放列表文件的末尾开始少于三个目标持续时间的片段。
在您的情况下,这意味着玩家将从开始游戏webinar-3.ts
。由于播放列表中没有其他片段,因此视频将停止。换句话说,您看到的行为是正确的。
协议的第6版(而非第4版)引入了EXT-X-START标签,该标签允许您指定视频的起点,因此您应在播放列表中更改EXT-X-VERSION标签的值因此。
如果您想从视频的开头开始播放(并且该活动不是直播的),为什么不创建一个VOD播放列表呢?将所有片段添加到播放列表,删除EXT-X-PLAYLIST-TYPE标签(或将其设置为VOD),然后将EXT-X-ENDLIST标签添加到播放列表的末尾。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句