如何在 m3u8 播放列表中循环 TS 文件

Ale*_*dar 5 video ffmpeg stream video-streaming m3u8

我想创建 m3u8 播放列表,如下所示:

#EXTINF:-1,LIVE STREAM
http://example.com/live01.ts
Run Code Online (Sandbox Code Playgroud)

当这个文件结束时,我想循环重复。live01.ts 结束后,需要重新开始并在循环中执行此无穷大。

这可能吗?

Mit*_*edo 6

像这样的静态播放列表是不可能的。

首先,您必须在#EXT-X-DISCONTINUITY标签之前有一个标签,#EXTINF以便播放器知道视频/音频帧上的时间戳不会按顺序继续。

其次,更重要的是,您需要一个#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
Run Code Online (Sandbox Code Playgroud)


sza*_*ary 2

这不是 m3u8 的官方功能。循环本身必须作为播放器设置来完成。