我想创建 m3u8 播放列表,如下所示:
#EXTINF:-1,LIVE STREAM
http://example.com/live01.ts
当这个文件结束时,我想循环重复。 live01.ts 结束后,需要重新开始并无限循环。
这可能吗?
这样的静态播放列表是不可能的。
首先,您必须在
#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
这不是 m3u8 的官方功能。循环本身必须作为播放器设置来完成。
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