Php 检测FFmpeg安装和版本

Php 检测FFmpeg安装和版本,php,ffmpeg,command,version,Php,Ffmpeg,Command,Version,我正在编写一个PHP脚本,可以动态地将上传的视频文件转换为FLV,但我只希望它在用户在服务器上安装了FFmpeg的情况下运行该部分脚本 有没有办法提前发现?我可以运行FFmpeg命令并测试它是否返回“未找到命令”吗?您回答了自己的问题,可以运行该命令,如果返回的是否定的,您知道它没有安装,或者您可以检查用户为可能的FFmpeg二进制文件设置的默认路径。您可以尝试一下: function commandExists($command) { $command = escapeshellarg

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


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

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

您可以尝试一下:

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
}

也可用于其他函数-不确定是否存在安全问题。

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

exec($cmd, $output, $returnvalue);
if ($returnvalue == 127) {
    # not available
}
else {
    #available
}
这在我的Ubuntu盒上运行

试试看:

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

嗨,我搜索这个问题,我可以通过以下代码获得ffmpeg的版本:
echo(shell_exec('/usr/bin/ffmpeg-version')

谢谢。您能否演示如何在PHP中计算exec()命令的返回?如果命令不起作用,PHP是否足够聪明,可以返回false?示例:if(strpos(
ffmpeg--help
,'ffmpeg')>-1)echo'Installed!'@Cd-MaN:除非这会导致输出一条类似于未安装ffmpeg包的消息,否则您可以通过运行。。。。另外,
strpos
不能作为Javascript等价物使用,您必须根据
!==false
。这是检查命令的一种非常糟糕的方法。已安装的手册页并不意味着程序已安装,反之亦然。检查可执行文件本身就足够了。公平地说,这是我想到的第一个想法,并在我测试它的服务器上工作,我想看看它是否也适用于OP。