我正在通过 ffmpeg 执行某些代码,将 avi 文件编码为 flv。我的 ffmpeg 代码是正确的并且工作正常,但是当发生一些错误时(假设它是一个损坏的 avi 文件,ffmpeg 将不会对其进行编码),所以我想知道错误是什么。这是示例代码:
$v_cmd=" some code to transcode";
exec($v_cmd,$v_output,$v_status);
if($v_status == 0)
{
echo "Success!";
}
else
{
echo "ERROR: ".$v_output;
}
但是这个 $v_output 只是显示为 ERROR: Array
...我尝试过
echo "ERROR: ".implode($v_output);
但它是空白的...我怎样才能得到 ffmpeg 给出的错误消息,以便我可以理解出了什么问题。这是一个 php cron 脚本,它不是在命令行中手动运行的。
最佳答案
在 POSIX 兼容的系统和应用程序中,错误将被发送到 STDERR,而不是 STDOUT。 exec
只会用 STDOUT 填充 $output
参数:
exec("foo", $output);
var_dump($output);
显示:
array(0) {
}
如果你想让它工作,你必须将 STDERR 重定向到 STDOUT。例如,在 *nix 上:
exec("foo 2>&1", $output);
var_dump($output);
将显示:
array(1) {
[0]=>
string(18) "sh: foo: not found"
}
关于php - 如何显示ffmpeg错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697743/