Определить установку и версию FFmpeg - PullRequest
11 голосов
/ 06 мая 2009

Я пишу сценарий PHP, который на лету преобразует загруженные видеофайлы в FLV, но я хочу, чтобы он выполнял эту часть сценария только в том случае, если на сервере установлен пользователь FFmpeg.

Был бы способ обнаружить это раньше времени? Может быть, я могу запустить команду FFmpeg и проверить, возвращается ли она «команда не найдена?»

Ответы [ 5 ]

9 голосов
/ 31 марта 2011

Попробуйте:

$ffmpeg = trim(shell_exec('which ffmpeg')); // or better yet:
$ffmpeg = trim(shell_exec('type -P ffmpeg'));

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

if (empty($ffmpeg))
{
    die('ffmpeg not available');
}

shell_exec($ffmpeg . ' -i ...');
6 голосов
/ 25 мая 2009

Третий параметр функции exec() - это возвращаемое значение выполненной программы. Используйте это так:

exec($cmd, $output, $returnvalue);
if ($returnvalue == 127) {
    # not available
}
else {
    #available
}

Это работает на моей коробке с Ubuntu.

3 голосов
/ 06 мая 2009

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

0 голосов
/ 28 мая 2013

привет, я ищу эту проблему и могу получить версию ffmpeg по этому коду: echo (shell_exec ('/ usr / bin / ffmpeg -version'));

0 голосов
/ 08 мая 2009

Вы можете попробовать:

function commandExists($command) {
    $command = escapeshellarg($command);
    $exists = exec("man ".$command,$out);
    return sizeof($out);
}

if (commandExists("ffmpeg")>0) {
   // FFMPeg Exists on server
} else {
   // No FFMPeg
}

Повторно используется и для других функций - без особых проблем с безопасностью.

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