ffmpeg限制段文件数量

Bin*_*omo 5 ffmpeg http-live-streaming m3u8

我正在学习生成 hls 流

目前我的 ffmpeg 命令看起来像

ffmpeg -analyzeduration 100000000 -probesize 1000000 \
-i https://nasa-i.akamaihd.net/hls/live/253565/NASA-NTV1-Public/master_500.m3u8 \
-c:v copy -g 90 -c:a aac \
-strict -2 \
-strftime 1  -use_localtime 1 -g 90 \
-hls_time 20 \
-hls_list_size 15 \
-hls_wrap 16 \
-hls_segment_filename mydir/%Y-%m-%d_%H-%M-%S.ts \
-f hls $4/index.m3u8 \
-hls_flags delete_segments \
Run Code Online (Sandbox Code Playgroud)

我只想有 15 个 ts 文件,每个文件 20 秒。

问题是:

  1. 它仍然生成超过 15 个文件,并且从不删除旧文件。而index.m3u8文件内容不断更新,仅列出了15个ts。

  2. 当我重新启动命令时,index.m3u8 仅以 1 个文件开始,而不是更新其列表。

Gya*_*yan 3

一些东西:

1)-hls_flags delete_segments出现在输出文件名之后,这里是播放列表。所以不适用。如果您指定了一个输出,它将应用于下一个输出。将其移至 m3u8 名称之前。

2)由于您复制的是视频,所以-g没有任何效果。也是重复的。删除两者。

3) 如果您使用 hls_wrap,请将其设置为15并删除 hls_flag。如果您想使用该标志,请删除 hls_wrap。由于delete_segment 的工作原理,旧文件将在“一段等于该段的持续时间加上播放列表的持续时间的时间后”被删除。所以,你最终至少会得到2 x list_size一些片段。