ffmpeg работает на терминале не с PHP exec

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

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

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

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

и видео.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);

выход:

массив (0) {} int(1)

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

любые мысли о том, как подойти к этому?

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

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

19
задан Andrea
15.04.2023 6:05 Количество просмотров материала 3085
Распечатать страницу

2 ответа

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

exec("ffmpeg  -i src.mp4 -ar 22050 -ab 32 -f flv -s 320x240 video.flv 2>&1", $o, $v);
1
отвечен Roey 2023-04-16 13:53

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

Решение Ths используйте полный путь к исполняемому файлу ffmpeg, например. / usr/bin / ffmpeg

0
отвечен Rodislav Moldovan 2023-04-16 16:10

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх