image - 如何为视频生成图像序列

标签 image video image-processing ffmpeg imagemagick

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

我尝试使用 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/

相关文章:

c++ - C++中的框过滤算法

matlab - 如何在滑动窗口检测上实现积分图像?

php图片上传

C++:将整数文本文件转换为BMP格式的位图图像文件

iphone - 如何在 iPhone 中的某个时间戳开始嵌入 YouTube 视频

javascript - 在javascript中呈现像视频一样的图像链

image - 在图像上定位 "black rectangles"- 与语言无关

java - View 太大,无法放入绘图缓存

javascript - 为图库创建图像模态

video - 播放两个视频,如何在 FFmpeg 中裁剪第二个视频