我想做一个简单的视频编辑器来创建一些图像的视频。它有一些变换效果,如运动,缩放,淡入淡出等。
我尝试使用ImageMagick创建每一帧的图像,并使用ffmpeg创建视频。
但是它的移动并不平稳,当它移动的时候看起来有点锯齿状。
例如,对于10s x 30fps的视频,需要300张图像。源图像应移动300px。
结果视频中的图像移动了1px到1px。
如何生成流畅运动效果的图像序列来制作视频?
发布于 2014-05-24 20:59:53
以下是我的代码的简要摘录。
$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
https://stackoverflow.com/questions/23733982
复制相似问题