我擅长 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 函数是否成功运行或如何调试它?任何帮助表示赞赏。
最佳答案
如果成功运行,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);
关于PHP - 使用 ffmpeg 将图像转换为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19864706/