Прибивание вниз Exec() проблемы:
Я предлагаю вам проверить, что exec()
дает ответ:
echo exec(...);
Конечно, может случиться так, что ffmpeg
просто не в вашем PATH
. в этом случае exec()
будет четко об этом, и вы, возможно, потребуется указать абсолютный путь к ffmpeg
, то есть:
Linux:
exec("/path/to/ffmpeg ...");
Окна:
exec("c:\\path\\to\\ffmpeg ...");
Фоновая задача:
Другой проблемой является то, что ffmpeg
может работать в течение довольно долго время, которое t приведет к таймауту. Чтобы избежать этой проблемы, вы можете выполнить ffmpeg
в фоновом режиме, добавляя &
в конце вашей команды, или, для Windows, добавляя cmd /C
перед вашей фактической команды:
Linux:
exec("ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 test.webm &");
Окна:
exec("cmd /C ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 test.webm");
В этом случае exec()
вернется немедленно, оставив ffmpeg()
работает в фоновом режиме. ffmpeg()
процесс завершится, как только он выполнит его выполнение. Но, конечно, вам нужно реализовать какой-то механизм мониторинга, если вы хотите уведомить пользователя о завершении преобразования, а файл с конверсией доступен для загрузки.
Попробуйте указать абсолютные пути (для команды и вывода) .. и как вы ожидаете «иметь файл test.webm в ответ» ???? – ManseUK
Является ffmpeg в PATH? Добавьте две переменные в качестве параметров в 'exec' и' var_dump() 'после вызова. – AndreKR
Выполняет ли 'exec()' что-то? Пожалуйста, опубликуйте результат 'echo exec()'. –