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

问题描述 投票:0回答:3

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

#EXTINF:-1,LIVE STREAM
http://example.com/live01.ts

当这个文件结束时,我想循环重复。 live01.ts 结束后,需要重新开始并无限循环。

这可能吗?

video ffmpeg stream video-streaming m3u8
3个回答
7
投票

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

首先,您必须在

#EXT-X-DISCONTINUITY
标签之前有一个
#EXTINF
标签,以便玩家知道视频/音频帧上的时间戳不会按顺序继续。

其次,更重要的是,您需要在文件头部有一个

#EXT-X-MEDIA-SEQUENCE:<number>
和/或
#EXT-X-DISCONTINUITY-SEQUENCE:<number>
,其增量速率与该视频块的持续时间相同。播放器将重新请求播放列表(直到看到
#EXT-X-ENDLIST
),并且在不增加这些值的情况下,它将继续假设
http://example.com/live01.ts
是序列中的第一个块。

如果您直接提供 M3U8 文件并且系统上有支持毫秒的睡眠命令,我建议如下:

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 的官方功能。循环本身必须作为播放器设置来完成。


0
投票

https://github.com/futzu/x9k3 x9k3 将在带有 -r 标志的循环中将 mpegts 文件作为 hls 进行流式传输

a@debian:~$ x9k3 -h
usage: x9k3 [-h] [-i INPUT] [-o OUTPUT_DIR] [-s SIDECAR_FILE] [-t TIME] [-T HLS_TAG] [-w WINDOW_SIZE]
            [-d] [-l] [-r] [-S] [-v] [-p]

optional arguments:
  -h, --help            show this help message and exit
  -i INPUT, --input INPUT
                        Input source, like "/home/a/vid.ts" or "udp://@235.35.3.5:3535" or
                        "https://futzu.com/xaa.ts"
  -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                        Directory for segments and index.m3u8 ( created if it does not exist )
  -s SIDECAR_FILE, --sidecar_file SIDECAR_FILE
                        Sidecar file of scte35 cues. each line contains PTS, Cue
  -t TIME, --time TIME  Segment time in seconds ( default is 2)
  -T HLS_TAG, --hls_tag HLS_TAG
                        x_scte35, x_cue, x_daterange, or x_splicepoint (default x_cue)
  -w WINDOW_SIZE, --window_size WINDOW_SIZE
                        sliding window size(default:5)
  -d, --delete          delete segments ( enables --live )
  -l, --live            Flag for a live event ( enables sliding window m3u8 )
  -r, --replay          Flag for replay (looping) ( enables --live and --delete )
  -S, --shulga          Flag to enable Shulga iframe detection mode
  -v, --version         Show version
  -p, --program_date_time
                        Flag to add Program Date Time tags to index.m3u8 ( enables --live)

就像这样:

a@debian:~$ x9k3 -i myvideo.ts -r

© www.soinside.com 2019 - 2024. All rights reserved.