在 Windows 上使用 FFMPEG 将图像转换为视频

Cad*_*nge 9 windows ffmpeg command-line video-conversion

我正在尝试将一系列 JPEG 图像转换为延时视频。它们的格式为 IMGP0001.JPG、IMGP0002.JPG 等。从外观上看,这应该与模式 IMGP%04.JPG 匹配。

我尝试了以下命令(从本页的第二个条目修改)

ffmpeg -f image2 -i IMGP%04d.jpg video.mpg
Run Code Online (Sandbox Code Playgroud)

我收到错误“IMGP%04d.JPG:没有这样的文件或目录”。

我究竟做错了什么?也许语法“IMGP%04d.JPG”是 *nix 特定的?如果是这样,Windows 等价物是什么?

Ass*_*him 10

基于上面 Mike 的回答,还有一些其他有用的开关也适用于 Windows 解决方案。

我使用以下一个衬垫来获得较慢的帧速率并压缩图像并生成较小的视频:

ffmpeg.exe -f image2 -framerate 25 -pattern_type sequence -start_number 1234 
        -framerate 3 -i "Imgp%%04d.jpg" -s 720x480 test.avi
Run Code Online (Sandbox Code Playgroud)

-framerate 3选项将生成的视频的帧速率设置为每秒 3 帧,以便我可以在短时间内看到每个静止图像。-r如果您需要它与您的-framerate值不同,添加为输出选项将更改输出的帧速率。该-s选项将图片重新缩放到所需的分辨率,以管理生成的视频的大小。或者,可以使用更灵活的比例过滤器

请注意,与上面 Jason 的评论相反,如果使用这样的-start_number开关,则没有必要重命名文件:

ffmpeg -f image2 -start_number n -i "IMGP%%04d.jpg" video.mpg 
    -vcodec mpeg4 test.avi
Run Code Online (Sandbox Code Playgroud)

n剧照序列的起点在哪里。

只要序列一旦开始就没有中断,这将起作用。如果存在空白并且您希望包含所有剧照,则可能需要重新编号以填补空白。


Mik*_*ick 7

尝试将文件名模板放在双引号中。此外,如果您在脚本中运行命令,您可能需要使用 %% 而不是 %。

  • 另一件要注意的事情是序列应该从 1 开始,否则它将无法正确检测。在处理文件之前,您可能需要重命名文件。今天这个问题让我很头疼。见 http://stackoverflow.com/questions/2829113/ffmpeg-create-a-video-from-images (3认同)
  • 就是这样!它是在批处理文件中调用的,我需要用另一个来转义 %。即 IMGP%%04d.jpg。 (2认同)
  • @JasonNavarrete:您可以通过使用`-start_number` 开关来避免重命名文件... ;) (2认同)