我在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函数是否成功运行或如何调试?感谢任何帮助。
答案 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);