PHP - 使用ffmpeg将图像转换为视频

时间:2013-11-08 17:08:18

标签: php video ffmpeg

我在PHP方面很擅长但对ffmpeg和exec很新。现在我已经通过ssh成功安装了ffmpeg。我引用了一些stackoverflow here,并在下面的代码中找到了使用多个图像制作视频。

<?php

echo exec('ffmpeg -f image2 -i image%d.jpg video.mpg');

?>

我在同一个文件夹中有image1.jpg和image2.jpg。我运行这个PHP代码,但什么也没发生...... video.mpg在哪里得到保存?以及如何检查exec函数是否成功运行或如何调试?感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

如果成功, video.mpg 已保存在您当前的工作目录中。如果需要,您可以将文件名更改为绝对路径。

要检查exec()函数是否成功运行,您可以传递第三个参数以获取退出状态:

exec('ffmpeg -f image2 -i image%d.jpg video.mpg', $output, $exit_status);

如果成功,$exit_status将获得0值,因此:

if ($exit_status === 0) {
    // ran fine
} else {
    // failed...
}

如果它出现问题,您可能希望在$output上出错。您可以将STDERR移至STDOUT,以此方式忽略原始STDOUT

exec('ffmpeg -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status);

然后您可以转储$output以查看STDERR上的内容:

if ($exit_status !== 0) {
    print implode("\n", $output);
}

如果 video.mpg 文件已存在,命令将卡住,您可能希望将-y标记传递给ffmpeg以覆盖任何现有文件:

exec('ffmpeg -y -f image2 -i image%d.jpg video.mpg 2>&1 >/dev/null', $output, $exit_status);