我正在尝试通过 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' 上运行 escape shell 命令回显 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 有点占用内存,因此也值得检查内存。
关于PHP ffmpeg exec 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9770173/