我正在实施HLS服务器并尝试通过VLC播放。它播放播放列表,但从不重新播放播放列表。有什么想法吗?下面是我要返回的播放列表的示例。
#EXTM3U
#EXTINF:9,
http://10.221.218.91:10042/clip/0.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/1.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/2.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/3.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/4.ts?session=23
#EXTINF:20,
http://10.221.218.91:10042/clip/5.ts?session=23
答案 0 :(得分:1)
播放列表中的每个媒体段必须具有唯一的整数序列号。它在#EXT-X-MEDIA-SEQUENCE标签中描述。每当新段附加到实时播放列表时,您必须增加媒体序列的十进制数。如果您不在播放列表中使用此标记,则假定媒体序列号= 0并且播放器假定没有新段到达。
此外,您必须在媒体播放列表中使用#EXT-X-TARGETDURATION,并使用十进制整数表示目标持续时间(以秒为单位)。当四舍五入到最接近的整数时,媒体播放列表文件中每个媒体段的#EXTINF持续时间必须小于或等于目标持续时间。
以上关于HLS的IETF草案的注释:http://tools.ietf.org/html/draft-pantos-http-live-streaming,尤其是第3.4.2和3.4.3段。
因此,根据这些规则,您对播放列表的示例必须如下:
#EXTM3U
#EXT-X-TARGETDURATION:20
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:9,
http://10.221.218.91:10042/clip/0.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/1.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/2.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/3.ts?session=23
#EXTINF:9,
http://10.221.218.91:10042/clip/4.ts?session=23
#EXTINF:20,
http://10.221.218.91:10042/clip/5.ts?session=23
然后#EXT-X-MEDIA-SEQUENCE在每个到达的新段上增加1(即大约在TARGETDURATION秒之后)。
答案 1 :(得分:0)
我强烈建议您在测试中使用VLC 2.1,因为我们大大提高了HLS支持。目前的预发布版本可在此处获取:http://get.videolan.org:81/testing/vlc-2.1.0-rc1/
此外,我不完全确定根据HLS标准的正确行为是什么 - 不时重新请求m3u8或服务器保持连接打开并在播放列表可用时推送更多内容。你应该检查一下: - )