2

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

ffmpeg  -i src.mp4 -ar 22050 -ab 32 -f flv -s 320x240 video.flv

Вывод терминала

... видео:3404 КБ, аудио:1038 КБ, глобальные заголовки:0 КБ, мультиплексирование 2.966904%

И video.flv создан правильно.

Затем, если вызывается через PHP exec:

exec("ffmpeg  -i src.mp4 -ar 22050 -ab 32 -f flv -s 320x240 video.flv", $o, $v);
var_dump($o);
var_dump($v);

выход:

array(0) {} int(1)

И файл не создается.

Есть мысли о том, как подойти к этому?

Я могу exec('whoami') без проблем.

Я также использовал полный путь ffmpeg: /usr/local/bin/ffmpeg

2 ответа2

1

добавьте "2> & 1" в конец команды, и она будет работать:

exec("ffmpeg  -i src.mp4 -ar 22050 -ab 32 -f flv -s 320x240 video.flv 2>&1", $o, $v);
0

да, проблема в том, что вы используете exec вместо shell_exec, дело в том, что среда exec не знает ни о каком исполняемом файле ffmpeg, а shell_exec знает, потому что он использует env. Баш / оболочки

Это решение использует полный путь к исполняемому файлу ffmpeg, например. / USR / бен / FFmpeg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .