检测FFmpeg安装和版本

时间:2009-05-06 18:43:06

标签: php ffmpeg command version

我正在编写一个PHP脚本,可以动态地将上传的视频文件转换为FLV,但如果用户在服务器上安装了FFmpeg,我只希望它能够运行该部分脚本。

有没有办法提前发现?我是否可以运行FFmpeg命令并测试它是否返回“命令未找到?”

5 个答案:

答案 0 :(得分:9)

尝试:

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

答案 1 :(得分:6)

exec()函数的第三个参数是执行程序的返回值。像这样使用它:

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

这适用于我的Ubuntu盒子。

答案 2 :(得分:3)

你回答了自己的问题,你可以运行命令,如果它返回否定,你知道它没有安装,或者你可以检查用户为可能的ffmpeg二进制文件设置的默认路径。

答案 3 :(得分:0)

你可以尝试一下:

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
}

也可以重复使用其他功能 - 不一定是安全问题。

答案 4 :(得分:0)

您好我搜索此问题,我可以通过此代码获取ffmpeg的版本: echo(shell_exec('/ usr / bin / ffmpeg -version'));