【问题标题】:PHP ffmpeg exec returns nullPHP ffmpeg exec返回null
【发布时间】:2012-03-19 12:25:55
【问题描述】:

我正在尝试通过 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) { }

我也试过shell_exec($cmd),它返回NULL

cmd.exe 具有为 IUSR 帐户设置的权限 - 例如我可以运行$cmd = 'dir' 并查看目录列表输出。

PHP 没有在安全模式下运行。

ffmpeg.exe 与我的 php 文件位于同一目录中,但我有相同的响应,在 $cmd 中给出了 ffmpeg.exe 文件的绝对路径。

ffmpeg 从命令行运行良好。

我正在运行 Windows XP、IIS 和 PHP 5.3。

编辑:

如果我运行 'ffmpeg -h' 我会得到帮助命令,这必须表明 ffmpeg 已被识别

我已将 PHP 内存限制增加到 1024 - 不走运。

【问题讨论】:

  • exec() 的第二个参数是return value,而不是stderr。返回值 1 意味着它出错了。我不知道为什么您在 $stdout 中看不到错误输出。

标签: php ffmpeg exec


【解决方案1】:

我现在已经完成了这项工作 - 我认为可能存在几个问题:

原来$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 有点占用内存,因此也值得检查内存。

【讨论】:

  • 也就是说ffmpeg只写入stderr而不是stdout?
  • 该命令不返回null,它会列出配置。使用$cmd = 'ffmpeg 2>&1';显示默认输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2018-02-13
  • 1970-01-01
  • 2018-05-31
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多