Я пытаюсь запустить ffmpeg через shell_exec на Windows. Моя функция не работает (она не выполняется, не выводит файл и не выводит никаких результатов из shell_exec)

function convertFile($audio, $image)
{
    $output = str_replace(".mp3", ".mp4", $audio);
    $shellOutput = shell_exec("ffmpeg  -loop 1 -r 2 -i \"$image\" -i \"$audio\" -shortest -c:v libx264 -preset medium -tune stillimage -crf 28 -c:a copy $output");
    echo $shellOutput;

}

Извиняюсь, если это что-то очевидное. Спасибо за любую помощь!

1 ответ1

3

Убедитесь, что пользователь веб-сервера может читать и выполнять ffmpeg , а бинарный файл находится в его PATH . Вы можете устранить эту проблему, указав путь к ffmpeg напрямую, например /usr/bin/ffmpeg .

Вы также можете рассмотреть возможность добавления 2>&1 к вашей команде, чтобы перенаправить stderr на stdout, поскольку ffmpeg будет выводить отладочные сообщения через stderr, и вы не увидите их в противном случае. Или полностью отключить вывод. Подробнее смотрите здесь: Использование FFmpeg из скриптов PHP

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