Обнаружить установку и версию 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'));