ffmpeg限制段文件的数量

时间:2017-08-26 11:10:54

标签: ffmpeg hls 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 \

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

问题是:

  1. 它仍会生成超过15个文件,从不删除旧文件。虽然index.m3u8文件内容不断更新,但只列出了15个ts。

  2. 当我重新启动命令时,index.m3u8只以1个文件开头,而不是更新它的列表。

2 个答案:

答案 0 :(得分:1)

一些事情:

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

2)由于您要复制视频,-g无效。它也重复了。删除两者。

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

答案 1 :(得分:0)

您应该将 -hls_list_size 设置为 0(0 是最大值)