为了账号安全,请及时绑定邮箱和手机立即绑定

当新图像传入时,保持 ffmpeg 将图像转换为视频

当新图像传入时,保持 ffmpeg 将图像转换为视频

元芳怎么了 2023-08-09 14:53:02
有没有办法让 ffmpeg 将传入的图像转换为 HLS,并在我想要的时候停止?我正在使用 ffmpeg 将图像转换为 m3u8/ts 以进行流式传输。摄像头设备将 24/7 发送图像,ffmpeg 将在用户请求时转换这些图像,直到他们停止观看。目前,我通过 Java 网络从摄像头设备获取图像,然后将这些图像移动到 ffmpeg 输入目录并使用 C++ 进行转换。这是一个完成这项工作的循环,因此每次移动图像时都会执行新的 ffmpeg。问题是剩余的 ts 文件太多,并且它们占用了服务器上的大量空间。所以我尝试使用delete_segments选项删除那些,但由于每次执行ffmpeg,它无法删除之前由ffmpeg生成的段。以下是我考虑的一些方法:使用其他功能删除文件,无需使用 ffmpeg。也许将图像直接传输到 ffmpeg 输入,并以某种方式使 ffmpeg 继续将这些图像转换为 ts。(而且我也想不出)或者也许改变整个结构。使用选项 1 会容易得多,但如果我可以使用 ffmpeg 自己的函数来做到这一点,那就太好了。
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

您可以使用输入文件列表,它可以是特殊文件(例如 FIFO 管道)。


那么你的命令可能如下所示:


mkfifo mylist.pipe

ffmpeg -f concat -safe 0 -i mylist.pipe output.mkv

您可以将每个图像添加到 mylist.pipe,如下所示:


echo "file '/path/to/image.png'"  >mylist.pipe

echo "file '/path/to/image2.png'" >mylist.pipe

如果路径是相对的,则不需要该-safe 0部分。

查看完整回答
反对 回复 2023-08-09
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信