我想制作一个简单的视频编辑器来从一些图像创建视频。
它具有一些变换效果,例如运动,缩放,淡入淡出等...
我尝试使用 ImageMagick 创建每帧图像并使用 ffmpeg 创建视频。
但它的移动并不顺畅,移动时似乎有点锯齿状。
例如,对于 10s x 30fps 的视频,它需要 300 张图像。源图像应移动 300 像素。
结果视频中的图像移动了 1px x 1px。
如何生成图像序列以获得平滑的运动效果来制作视频?
最佳答案
这是我的代码的简短摘录。
$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
关于image - 如何为视频生成图像序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23733982/