我正试图通过PHP exec调用运行ffmpeg,我已经调试了一段时间,并查看了这里的许多响应,但仍然没有找到任何答案。。。
我的简化电话是:
$cmd = 'ffmpeg 2>&1';
exec(escapeshellcmd($cmd), $stdout, $stderr);
var_dump($stderr);
var_dump($stdout);
var_dump($cmd);
exit;
我的输出是$stderr=int(1)和$stdout=array(0){}
我还尝试了返回NULL
的shell_exec($cmd)
。
cmd.exe为IUSR帐户设置了权限-例如,我可以运行$cmd = 'dir'
并查看目录列表输出。
PHP没有在安全模式下运行。
ffmpeg.exe和我的php文件在同一个目录中,但我有相同的响应,给出了$cmd
中ffmpeg..exe文件的绝对路径。
ffmpeg在命令行中执行良好。
我运行的是Windows XP、IIS和PHP 5.3。
编辑:
如果我运行"ffmpeg-h",我会得到帮助命令,这必须表明ffmpeg是可识别的
我已经将PHP的内存限制增加到1024——运气不好。
我现在已经处理好了-我认为可能有几个问题:
事实证明$cmd = 'ffmpeg'
返回null,所以这不是一个好的测试!
还在'2>&1'回声2^>^&1"-我想这是我最初的问题。
我现在已经设法使用:"ffmpeg-I SAMPLE.AVI 2>&1’。
工作代码:
$cmd = 'ffmpeg -i SAMPLE.AVI 2>&1';
exec($cmd, $output, $value);
var_dump($output);
var_dump($value);
var_dump($cmd);
exit;
如上所述,ffmpeg有点占用内存,因此也值得检查内存。