如何生成视频图像序列

时间:2014-05-19 09:16:58

标签: image video image-processing ffmpeg imagemagick

我想创建一个简单的视频编辑器,从一些图像创建视频。 它有一些变换效果,如运动,缩放,淡入淡出等......

我尝试使用ImageMagick创建每帧图像,并使用ffmpeg创建视频。

但是它不会顺利移动,当它移动时似乎有点麻烦。

例如,对于10s x 30fps视频,它需要300张图像。源图像应移动300px。

结果视频中的图像移动1px 1px。

如何生成图像序列以获得平滑的动作效果来制作视频?

1 个答案:

答案 0 :(得分:0)

以下是我的代码的简要摘录。

$fps = 30;
$duration = 5;
$y1 = 0; $y2 = 90;
$frames = $fps * $duration;
for ($i = 0; $i < $frames; $i++) {
    $y = $y1 + ($y2 - $y1) * $i / $frames;
    $im = new Imagick("1.png");
    $im->resizeImage(800, 600, imagick::FILTER_LANCZOS, 0.9, false); 
    $im->cropImage(640, 360, 0, $y);
    $im->setImagePage(640, 360, 0, 0);
    $im->writeImage(sprintf("tmp/%05d.jpg", $i + 1));
}

$cmd = sprintf("ffmpeg -f image2 -i %s/tmp/%%5d.jpg -r %d -pix_fmt yuv420p -y %s/tmp/result.mp4", dirname(__FILE__), $fps, dirname(__FILE__));
exec ($cmd);

以下是我想要的视频链接和我制作的结果视频。

我想要的示例视频:https://www.dropbox.com/s/p6ewanf3zfk1bd6/sample.mp4

我制作的结果视频:https://www.dropbox.com/s/4skvlbv8iwgyf1d/movie.mp4