你好,我有一个 ffmpeg 的实时 HTTP 流输入 我想使用 ffmpeg 创建 HLS 流来执行此操作
ffmpeg -i http://127.0.0.1:4242/bysid/7275 -map 0 -codec:v libx264 -codec:a copy -f ssegment -segment_list playlist.m3u8 -segment_list_type hls -segment_list_size 10 -segment_list_flags +live -segment_time 10 out%03d.ts
我工作正常,我只是想删除 playlist.m3u8 中未显示的旧段
segment_list_size 10
这将保留播放列表文件中的最后 10 个文件,我只想将这些文件保留在硬盘上
您可以使用 HLS 分段器最近添加的选项:
-hls_flags delete_segments
您需要更改命令以使用 HLS 分段器而不是流分段器,方法是使用 -f hls 而不是 -f ssegment。
我一直在使用此选项,但它并没有完全按照您的要求进行操作,而是将其实现为符合 HLS 规范。有关更多信息,请参阅 ffmpeg 文档:https://www.ffmpeg.org/ffmpeg-formats.html
使用
-segment_wrap 10
用于换行和重写段文件
以下内容按预期工作,并且正在删除旧的段文件:
ffmpeg.exe -i rtsp://admin:[电子邮件受保护]:554/Streaming/Channels/1 -fflagslush_packets -hls_list_size 4 -max_delay 5 -flags -global_header -hls_flags delete_segments -hls_time 3 -vcodec copy -y C:\T xample.m3u8