我的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轻松完成这项工作吗?
答案 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制作了一个组件包装器。这是非常昂贵的,但值得测试。但是你想要做的事情非常简单,命令行对你来说已经足够了。