web-dev-qa-db-ja.com

FFmpegのインストールとバージョンを検出する

アップロードしたビデオファイルをその場でFLVに変換するPHPスクリプトを書いていますが、ユーザーがサーバーにFFmpegをインストールしている場合にのみ、スクリプトのその部分を実行したいと思います。

これを事前に検出する方法はありますか?おそらくFFmpegコマンドを実行して、「コマンドが見つかりません」というメッセージが返されるかどうかをテストできますか?

11
Aaron

試してください:

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

exec()関数の3番目のパラメーターは、実行されたプログラムの戻り値です。次のように使用します。

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

これは私のUbuntuボックスで機能します。

6
Peter Stuifzand

あなたはあなた自身の質問に答えました、あなたはコマンドを実行することができます、そしてそれが否定的に戻ったならあなたはそれがインストールされていないことを知っています、あるいはあなたは可能なffmpegバイナリのためにユーザーが設定したデフォルトパスをチェックすることができます。

3
X-Istence

これを試してみることができます:

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
}

他の機能にも再利用できます-セキュリティ上の懸念はありません。

0
StudioKraft

こんにちは私はこの問題を検索し、次のコードでffmpegのバージョンを取得できます:echo(Shell_exec( '/ usr/bin/ffmpeg -version'));

0