我正在学习生成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秒。
问题是:
它仍会生成超过15个文件,从不删除旧文件。虽然index.m3u8文件内容不断更新,但只列出了15个ts。
当我重新启动命令时,index.m3u8只以1个文件开头,而不是更新它的列表。
答案 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 是最大值)