检测FFmpeg安装和版本

Aar*_*ron 11 php command ffmpeg version

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

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

Ali*_*xel 9

尝试:

$ffmpeg = trim(shell_exec('which ffmpeg')); // or better yet:
$ffmpeg = trim(shell_exec('type -P ffmpeg'));
Run Code Online (Sandbox Code Playgroud)

如果它返回空,则ffmpeg不可用,否则它将保存可执行文件的绝对路径,您可以在实际的ffmpeg调用中使用它:

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

shell_exec($ffmpeg . ' -i ...');
Run Code Online (Sandbox Code Playgroud)


Pet*_*and 6

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

exec($cmd, $output, $returnvalue);
if ($returnvalue == 127) {
    # not available
}
else {
    #available
}
Run Code Online (Sandbox Code Playgroud)

这适用于我的Ubuntu盒子.


X-I*_*nce 3

您回答了自己的问题,您可以运行该命令,如果返回负值,您就知道它尚未安装,或者您可以检查用户为可能的 ffmpeg 二进制文件设置的默认路径。

  • 示例: if (strpos(`ffmpeg --help`, 'ffmpeg') > -1) echo '已安装!'; (3认同)