3

我的 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

4 回答 4

3

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

-布拉德

于 2010-06-05T07:17:48.323 回答
2

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

于 2009-09-29T12:10:32.003 回答
2

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

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

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

于 2009-09-29T14:04:23.960 回答
2

DelphiFFMpeg中的人已经为 FFMpeg 制作了一个组件包装器它非常昂贵,但值得一试。但是,您想要做的非常简单,命令行对您来说绰绰有余。

于 2009-09-29T14:35:22.220 回答