Gar*_*arp 4 ffmpeg http-live-streaming
我目前有一种工作方式来获取实时流并在它仍然存在时开始在本地下载它。
ffmpeg -i source_hls.m3u8 -c copy output.mkv -y
问题是我实际上并不想保存整个内容,我只是定期在 output.mkv 命令上运行另一个命令来创建部分实时流的剪辑。
我想知道是否有可能将 output.mkv 文件限制为只有 60 秒长,所以一旦流超过 1 分钟,它就会切断旧视频并被新的滚动视频替换。
这是可能的还是不可能的?
你可以接近,使用段复用器。
ffmpeg -i source_hls.m3u8 -c copy -f segment -segment_time 60 -segment_wrap 2 -reset_timestamps 1 out%02d.mkv -y
Run Code Online (Sandbox Code Playgroud)
这将写入 out00.mkv,然后写入 out01.mkv,然后覆盖 out00.mkv,接下来覆盖 out01.mkv,依此类推。
分段时间设置为 60 秒,因此每个分段将在 60 秒左右。拆分的目标是输入的 60,120,180,240... 秒。但是,视频流将仅在分割目标处或之后的关键帧处被分割。所以,如果 t=59 之后的第一个关键帧是 66,那么第一个片段将是 66s 长。下一个目标是 120 秒。假设在 121 秒有一个 KF,所以第二段将是 66 到 121 秒 = 55 秒长。检查段时要记住的事情。
检查文件修改时间以查看哪个段包含较早的数据。
如果要减少剩余时长,相应地减少segment_time和增加segment_wrap。segment_time x segment_wrap应该很target saved duration + segment_time长。
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |