我在服务器上存储了很多图像,并在 MySQL 数据库中提供了参考,以便我可以轻松地从特定日期/时间查询图像。
以 7 张图像/小时的间隔拍摄图像。
假设我想创建过去 4 天的延时摄影,并制作一部 5 秒的电影。我如何计算如何均匀地丢帧以达到所需的 5 秒长度?
这是我到目前为止得到的。
总图像:4 天 * 24 小时 * 7 图像/小时 = 672 图像 24 fps 所需图像:24 * 5 = 120 图像
将总图像除以所需图像,以找出我需要保留的/每一帧
672 / 120 = 5.6
然后我循环遍历所有 672 个图像,并且每 5 次或 6 次我将对该图像的引用存储在一个数组中。
这是我的问题。如果我四舍五入我会得到一个比我想要的更长的视频,如果我四舍五入我会得到一个更短的视频。
如果我在循环时保留每 5 个图像:134 个图像/24 fps = 5.6 秒视频如果我在循环时保留每 6 个图像:112 个图像/24 fps = 4.6 秒视频
是否有可能让它变得更好,并且仍然均匀地跳过图像?
使用 xxfelixxx 在 PHP 中的回答解决了这个问题继承了 PHP 中的代码:
$start = 1;
$stop = 672; // Total Images
$dur = 5; // Video Duration
$n = 24 * $dur; // Required frames - 24 FPS * Duration
$next = $start;
$step = ( $stop - $start ) / $n;
$frames = array();
for ($i = 1; $i <= $n; $i++) {
$frames[] = round($next);
$next += $step;
};
var_dump($frames);