【问题标题】:How to create a video with ffmpeg out of a single image file that is constantly overwritten?如何使用 ffmpeg 从不断被覆盖的单个图像文件中创建视频?
【发布时间】:2022-01-16 00:32:03
【问题描述】:

我正在尝试使用ffmpeg 从不断被覆盖的图像文件中创建视频。我正在检查文档,我可以看到这是可以反向实现的:

ffmpeg -y -f v4l2 -video_size 1280x720 -i /dev/video0 \
       -r 0.2 -qscale:v 2 -update 1 /tmp/webcam.jpg

有没有办法可以从这个/tmp/webcam.jpg 文件中重新创建这个视频文件,这个文件不断被新帧覆盖?即:指定循环遍历同一图像的时间?

在这种情况下,应用程序每隔一秒钟通过套接字发送一个新图像并保存到/tmp/image.jpg。例如,在重写该图像时,我需要将其转换为一分钟的视频。

【问题讨论】:

  • 从单个图像创建视频是simple。 “覆盖”部分令人费解。请问为什么图像被覆盖而不是用不同的文件名保存?您打算使用单个命令行还是使用脚本来解决它?
  • 你能控制那个(恕我直言愚蠢的)应用程序吗?
  • 我无法控制它@tink
  • 它被覆盖是因为它是一个 metasploitable 模块,可以捕获桌面并将其保存为图像。我一直在寻找使用命令,但如果它只能通过脚本实现,那么我想它必须通过脚本来完成@Rotem
  • 我遇到的问题是,目前,它输出到html,它会刷新以加载新图像。它在外部托管,因此没有网络服务器。 python -m http.server 无法管理请求,并且如果没有构建完整的 HTTP 服务器(具有授权,因此其他人无法查看它),那么它就无法访问托管在 VPS 上。我想知道在我开始配置 Apache 并构建一个 Web 应用程序之前是否有更简单的方法来正确完成它。

标签: linux ffmpeg


【解决方案1】:

命名管道“概念证明”:

  • 在 Linux 终端中创建命名管道:

     mkfifo webcam_pipe
    
  • 执行从命名管道读取并将视频写入webcam.mkv文件的FFmpeg命令:

     ffmpeg -y -r 1 -f image2pipe -vcodec mjpeg -i webcam_pipe -vcodec copy webcam.mkv
    
  • 打开另一个控制台,执行 FFmpeg 命令,以 1Hz(60 秒长)将 JPEG 图像写入命名管道:

     ffmpeg -y -re -f lavfi -i testsrc=size=1280x720:rate=1 -t 60 -vcodec mjpeg -f image2pipe webcam_pipe
    

当管道名称为/tmp/webcam.jpg时它也可以工作

在您的情况下,“应用程序正在通过套接字发送新图像”,我不知道它是否会起作用......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多