Обнаружить установку и версию FFmpeg

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

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

Ответ 1

Try:

$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 ...');

Ответ 2

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

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

Это работает в моем поле Ubuntu.

Ответ 3

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

Ответ 4

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

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
}

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

Ответ 5

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