Exec команда не работает? - PullRequest
0 голосов
/ 26 марта 2012

Пытаетесь конвертировать мое видео, используя php и ffmpeg, но приведенный ниже код не дает мне никакого результата или выходного файла?Знаете почему и что я делаю не так?Я должен иметь файл test.webm взамен, но не иметь его: - (

<?php
 exec("ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480  test.webm");
?>

1 Ответ

2 голосов
/ 26 марта 2012

Проблемы с exec ():

Я бы посоветовал вам проверить, что exec() возвращает:

echo exec(...);

Конечно, это можетбывает, что ffmpeg просто нет в вашем PATH.В этом случае exec() четко заявит об этом, и вам может потребоваться указать абсолютный путь к ffmpeg, то есть:

Linux:

exec("/path/to/ffmpeg ...");

Windows:

exec("c:\\path\\to\\ffmpeg ...");

Фоновая задача:

Другая проблема заключается в том, что ffmpeg может работать довольно долго, что можетпривести к таймауту.Чтобы избежать этой проблемы, вы можете выполнить ffmpeg в фоновом режиме, добавив & в конце вашей команды, или, для Windows, добавив cmd /C перед вашей фактической командой:

Linux:

exec("ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 test.webm &");

Windows:

exec("cmd /C ffmpeg -i test.mp4 -ab 96k -b:v 700k -ar 44100 -s 640x480 test.webm");

В этом случае exec() немедленно вернется, оставив ffmpeg() в фоновом режиме.ffmpeg() процесс прекратится, как только завершится его выполнение.Но, конечно, вам нужно реализовать какой-то механизм мониторинга, если вы хотите уведомить пользователя о том, что преобразование завершено и преобразованный файл доступен для загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...