ffmpeg限制段文件数
ffmpeg limit number of segment file
我正在学习生成 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 /index.m3u8 \
-hls_flags delete_segments \
我只想有 15 个 ts 文件,每个 20 秒。
问题是:
它仍然生成超过 15 个文件,从不删除旧文件。而index.m3u8文件内容不断更新,只列出了15个ts
当我重新启动命令时,index.m3u8 开始时只有 1 个文件,而不是更新它的列表。
几件事:
1) -hls_flags delete_segments
出现在输出文件名之后,这里是播放列表。所以它没有应用。如果您指定了一个,它将应用于下一个输出。移到m3u8名称前
2) 由于你是复制视频,所以-g
没有效果。也是重复的。两者都删除。
3) 如果您使用 hls_wrap,请将其设置为 15
并删除 hls_flag。如果要使用该标志,请删除 hls_wrap。由于 delete_segment 的工作方式,旧文件将在“一段时间后被删除,该时间等于片段的持续时间加上播放列表的持续时间。”。因此,您最终会得到至少 2 x list_size
个细分。
你应该设置 -hls_list_size 为 0(0 是最大值)
我正在学习生成 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 /index.m3u8 \
-hls_flags delete_segments \
我只想有 15 个 ts 文件,每个 20 秒。
问题是:
它仍然生成超过 15 个文件,从不删除旧文件。而index.m3u8文件内容不断更新,只列出了15个ts
当我重新启动命令时,index.m3u8 开始时只有 1 个文件,而不是更新它的列表。
几件事:
1) -hls_flags delete_segments
出现在输出文件名之后,这里是播放列表。所以它没有应用。如果您指定了一个,它将应用于下一个输出。移到m3u8名称前
2) 由于你是复制视频,所以-g
没有效果。也是重复的。两者都删除。
3) 如果您使用 hls_wrap,请将其设置为 15
并删除 hls_flag。如果要使用该标志,请删除 hls_wrap。由于 delete_segment 的工作方式,旧文件将在“一段时间后被删除,该时间等于片段的持续时间加上播放列表的持续时间。”。因此,您最终会得到至少 2 x list_size
个细分。
你应该设置 -hls_list_size 为 0(0 是最大值)