使用Delphi或FFMpeg从图像序列创建电影

时间:2009-09-29 12:02:25

标签: delphi batch-file ffmpeg

我的Delphi应用程序创建了一个名为frame_001.png到frame_100.png的序列。

我需要将其编译成影片剪辑。我想也许最容易从命令行调用ffmpeg,根据他们的文档:

  

用于从许多图像创建视频:

     

ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

     

语法foo-%03d.jpeg指定使用由填充零的三个数字组成的十进制数来表示序列号。它与C printf函数支持的语法相同,但只有接受普通整数的格式才合适。

来自:http://ffmpeg.org/ffmpeg-doc.html#SEC5

但是我的文件是(无损)png格式,所以我必须首先使用imagemagick进行转换。

我的命令行现在是:

ffmpeg.exe -f image2 -i c:\temp\wentelreader\frame_%05d.jpg -r 12 foo.avi

但后来我收到了错误:

[image2 @ 0x133a7d0]Could not find codec parameters (Video: mjpeg) c:\temp\wentelreader\Frame_C:\VID2EVA\Tools\Mencoder\wentel.bat5d.jpg: could not find codec parameters

我做错了什么?

或者可以使用Delphi轻松完成这项工作吗?

4 个答案:

答案 0 :(得分:3)

不确定您是否感兴趣但是@ http://ultrastardx.svn.sourceforge.net/viewvc/ultrastardx/trunk/src/lib/ffmpeg/有这个delphi标头 所以你可以使用DLL vs命令行。

-Brad

答案 1 :(得分:2)

ffmpeg可以从png图像创建一个电影,为什么你认为你必须将它们转换为jpeg?

答案 2 :(得分:2)

查看错误消息中的文件名。这不可能是正确的。百分号需要一直到您正在运行的程序,但它正在被批处理文件扩展,其中%0扩展为文件的全名和路径。将批处理文件中的百分号加倍:

  

ffmpeg.exe -f image2 -i c:\temp\wentelreader\frame_ %% 05d.jpg -r 12 foo.avi

另外,当你已经说过你的文件被命名为 frame_001.png ,只有三位数时,为什么你想要五个数字呢?

答案 3 :(得分:2)

DelphiFFMpeg中的人已经为FFMpeg制作了一个组件包装器。这是非常昂贵的,但值得测试。但是你想要做的事情非常简单,命令行对你来说已经足够了。