从一堆JPEG创建视频

nei*_*man 2 jpeg ffmpeg

我有一个闭路电视摄像机,它在检测到移动时将 JPEG 图像 (.jpg) 上传到 FTP 服务器。我们似乎得到了很多图像,所以我想将它们制作成视频以方便观看。

我已经做了几次谷歌搜索,但没有什么能产生我期望看到的。我使用的文件夹有超过 2000 张名为 AyyMMddhhmmssff.jpg 的图像。如果我需要重命名,我可以这样做,因为我已经发现我需要让 FFMPEG 工作。

我想要每秒一张图像,或者每秒 2 张图像,以便在播放视频时易于查看图像。是的,我知道这会产生 20/40 分钟以上的视频!

我对 Windows、macOS 或 Ubuntu 解决方案感到满意!我的首选是 Windows(因为那是 FTP 服务器所在的位置)。

图像魔术师

convert *.jpg video.mpg
Run Code Online (Sandbox Code Playgroud)

这听起来很棒,很好,很简单。但是,我已经在我的 Mac(通过 brew 安装)和 Ubuntu 上尝试过,并且都使相关系统的性能停滞不前,20 分钟后,仍然没有完成。我不得不重新启动 Mac,因为我什么也做不了!

FFMPEG

ffmpeg -y -r 6 -f image2 -s 1920x1080 -i <path>\%06d.jpg -vcodec libx264 -pix_fmt yuv420p <path>/video.mp4
Run Code Online (Sandbox Code Playgroud)

我不是使用 FFMPEG 的专家,但我已经将它用于多项任务,并发现它是一个很好的实用工具。上面的命令确实生成了一个视频,但图像显示太快,删除了视频的点。我尝试调整值并使其变得更好,但不完全是我所追求的。一次尝试(设置-r 1IIRC)导致整个视频只有一张图片!很明显,即使我看过手册,我也不明白 FFMPEG 命令中的各种参数!

Gya*_*yan 5

如果将图像重命名为连续编号,则可以使用

ffmpeg -y -framerate 1 -i <path>\%06d.jpg -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
Run Code Online (Sandbox Code Playgroud)

连续编号,如000001.jpg, 000002.jpg, 000003.jpg... 请注意,每个名称中正好有 6 个字符,这满足%06d传递给 ffmpeg 的要求。

如果你不想重命名,那么创建一个表单的文本文件,

file first.jpg
file second.jpg
file third.jpg
...
file last.jpg
Run Code Online (Sandbox Code Playgroud)

进而

ffmpeg -f concat -r 1 -i list.txt -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
Run Code Online (Sandbox Code Playgroud)