PHP ffmpeg exec возвращает ноль - PullRequest
4 голосов
/ 19 марта 2012

Я пытаюсь запустить ffmpeg через вызов exec PHP, я некоторое время отлаживал и просматривал множество ответов здесь, но до сих пор не нашел ответов ...

Упрощенный мойВызов:

$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, но у меня тот же ответ, в котором указан абсолютный путь к файлу ffmpeg.exe в $cmd.

ffmpeg выполняется из командной строки в порядке.

Я использую Windows XP, IIS и PHP 5.3.

EDIT:

Если я запускаю 'ffmpeg -h', я получаю команды помощи, которые должны указыватьчто ffmpeg распознается

Я увеличил предел памяти PHP до 1024 - не повезло.

1 Ответ

5 голосов
/ 20 марта 2012

У меня теперь это работает - я думаю, что, возможно, было несколько проблем:

Оказывается, $cmd = 'ffmpeg' возвращает ноль, так что это не хороший тест!

Такжезапуск команды escape shell на '2> & 1' выводит 2 ^> ^ & 1 "- я думаю, что это была моя первоначальная проблема.

Теперь мне удалось проверить файл с помощью: 'ffmpeg -i SAMPLE.AVI2> & 1 '.

Рабочий код:

$cmd = 'ffmpeg -i SAMPLE.AVI 2>&1';

exec($cmd, $output, $value);

var_dump($output);
var_dump($value);
var_dump($cmd);
exit;

Как уже отмечалось выше, ffmpeg - это нехватка памяти, поэтому стоит проверить и память.

...