如何在 m3u8 播放列表中循环播放 TS 文件
Posted
技术标签:
【中文标题】如何在 m3u8 播放列表中循环播放 TS 文件【英文标题】:How to loop TS file in m3u8 playlist 【发布时间】:2016-05-01 16:36:34 【问题描述】:我想创建 m3u8 播放列表,如下所示:
#EXTINF:-1,LIVE STREAM
http://example.com/live01.ts
当这个文件结束时,我想循环重复。 live01.ts结束后,需要重新开始,无限循环。
这可能吗?
【问题讨论】:
尝试将 .m3u8 嵌套在其自身中。 仅适用于 VLC 播放器,但不适用于 KODI。我需要在 KODI 上玩。还有其他解决方案吗?。 见过this? 【参考方案1】:这样的静态播放列表是不可能的。
首先,您必须在#EXTINF
标签之前有一个#EXT-X-DISCONTINUITY
标签,以便播放器知道视频/音频帧上的时间戳不会按顺序继续。
其次,更重要的是,您需要在文件开头添加一个 #EXT-X-MEDIA-SEQUENCE:<number>
和/或 #EXT-X-DISCONTINUITY-SEQUENCE:<number>
,以与该视频块的持续时间相同的速率递增。播放器将重新请求播放列表(直到它看到#EXT-X-ENDLIST
),并且在不增加这些值的情况下,它将继续假设http://example.com/live01.ts
是序列中的第一个块。
如果您直接提供 M3U8 文件,并且您的系统上有一个支持毫秒的 sleep 命令,我建议您这样做:
file="/path/to/file.m3u8"
duration="1.337"
make_playlist()
echo "#EXTM3U"
echo "#EXT-X-MEDIA-SEQUENCE:$1"
echo "#EXT-X-DISCONTINUITY-SEQUENCE:$1"
echo "#EXT-X-DISCONTINUITY"
echo "#EXTINF:$duration,"
echo "http://example.com/live01.ts"
echo
for ((x=0;;x++)); do
make_playlist "$x" > "$file"
sleep "$duration"
done
【讨论】:
【参考方案2】:这不是 m3u8 的官方功能。循环本身必须作为播放器设置完成。
【讨论】:
感谢您的回答。我在 KODI 播放列表中找到了选项 - 全部重复,这解决了我的问题!以上是关于如何在 m3u8 播放列表中循环播放 TS 文件的主要内容,如果未能解决你的问题,请参考以下文章
网页视频经过m3u8 技术切片且加密的TS文件在播放时有缓存文件,但提取出来就无法播放了,这种情况