Я пытаюсь запустить 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.
РЕДАКТИРОВАТЬ:
Если я запустил «ffmpeg -h», я получаю команды справки, которые должны указывать, что ffmpeg распознается
Я увеличил предел памяти PHP до 1024 – не повезло.
У меня теперь это работает – я думаю, что может быть несколько вопросов:
Оказывается, что $cmd = 'ffmpeg'
возвращает null, поэтому это не хороший тест!
Также выполняйте команду escape shell из '2> & 1' echo 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 – это немного ожог памяти, поэтому стоит также проверить память.