1

我擅长 php,但对 ffmpeg 和 exec 的东西非常陌生。现在我已经通过 ssh 成功安装了 ffmpeg。我在这里引用了一些 stackoverflow,并在下面找到了使用多个图像制作视频的代码。

<?php

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

?>

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

4

1 回答 1

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);
于 2013-11-08T17:17:35.623 回答