ffmpeg HTTP LIVE STREAMING 删除旧段

Posted

技术标签:

【中文标题】ffmpeg HTTP LIVE STREAMING 删除旧段【英文标题】:ffmpeg HTTP LIVE STREAMING remove old segments 【发布时间】:2015-01-29 09:16:40 【问题描述】:

你好,我有一个用于 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 个文件,我只想将这些文件保留在硬盘上

【问题讨论】:

【参考方案1】:

您可以使用 HLS 分段器最近添加的选项:

-hls_flags delete_segments

您需要通过使用 -f hls 而不是 -f ssegment 来更改命令以使用 HLS 分段器而不是流分段器。

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

【讨论】:

我将 -f 段替换为 -f hls,但出现错误:无法为输出文件 #0 写入标头(编解码器参数不正确?):参数无效 使用 -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【参考方案2】:

使用

-segment_wrap 10

用于包装和重写段文件

【讨论】:

以上是关于ffmpeg HTTP LIVE STREAMING 删除旧段的主要内容,如果未能解决你的问题,请参考以下文章

HTTP Live Streaming、FFMPEG & FFSERVER 和 iPhone OS 3

将视频转换为 HLS(HTTP Live Streaming) 协议格式文件

用ffmpeg提取知乎live中的音频数据

FFMPEG音频问题Youtube Live

使用ffmpeg搭建HLS直播系统

命令行利用ffmpeg实现rtmp推流《转》