如何在 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 文件

网页视频经过m3u8 技术切片且加密的TS文件在播放时有缓存文件,但提取出来就无法播放了,这种情况

m3u8网页视频怎么打开

安卓手机播放M3U8视频文件的方法

.ts视频采用m3u8方式,已知是 AES-128 为加密方式,求教

如何使用 FFMPEG 创建持续时间恒定的 m3u8 播放列表和 mpeg-ts 块?