FFmpeg HTTP直播流删除旧片段

17

您好,我有一个用于FFmpeg的实时HTTP流输入,我想创建HLS流媒体,我使用FFmpeg来完成此操作。

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个文件,我只想在硬盘上保留这些文件。

2个回答

27

你可以使用最近添加的选项来使用HLS片段器:

-hls_flags delete_segments

您需要更改命令,使用HLS分段器而不是流分段器,即使用-f hls而不是-f ssegment。

我一直在使用这个选项,但它并没有完全按照您的要求执行,而是按照HLS规范进行实现。更多信息请参阅ffmpeg文档:https://www.ffmpeg.org/ffmpeg-formats.html


我把 -f segment 改成了 -f hls,但是出现了错误:无法为输出文件 #0 写入头部(编解码器参数不正确):无效的参数。 - Dr.jacky
1
一个使用-f hls和-hls_flags delete_segments的示例:ffmpeg -v verbose -i "rtsp://admin:XXX@192.168.2.73:554/cam/realmonitor?channel=1&subtype=0" -vf scale=1920:1080 -vcodec libx264 -r 25 -b:v 1000000 -crf 31 -an -sc_threshold 0 -f hls -hls_time 5 -hls_list_size 5 -hls_flags delete_segments stream.m3u8 - super_ylam

2

使用

-segment_wrap 10

用于包装和重写分段文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接