FFmpeg kurulum ve Sürüm Algılama

4 Cevap php

Ben anında FLV yüklenen video dosyalarını dönüştüren bir PHP komut dosyası yazıyorum, ancak kullanıcı FFmpeg sunucuda yüklü eğer ben sadece komut kısmını çalıştırmak istiyorum.

Bu zaman öncesinde algılamak için bir yolu var olurdu? Ben belki bir FFmpeg komutunu çalıştırın ve geri geliyor olmadığını test edebilir "komut bulunamadı?"

4 Cevap

exec() fonksiyonuna üçüncü parametre yürütülen programın dönüş değeri. Bu gibi kullanın:

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

Bu benim Ubuntu kutusunda çalışır.

Deneyin:

$ffmpeg = trim(shell_exec('which ffmpeg')); // or better yet:
$ffmpeg = trim(shell_exec('type -P ffmpeg'));

Boş ffmpeg mevcut değil geri gelirse, aksi takdirde size gerçek ffmpeg çağrısında kullanabilirsiniz yürütülebilir, mutlak yolunu tutacaktır:

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

shell_exec($ffmpeg . ' -i ...');

Sen, kendi soru cevap komutunu çalıştırabilirsiniz ve negatif geri geliyor eğer yüklü değil biliyorum, ya da kullanıcı olası ffmpeg ikili için belirlediği varsayılan yolları kontrol edebilirsiniz.

Bunu bir deneyin verebilir:

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
}

Yanı sıra diğer işlevler için Kullanımlık - güvenlik kaygıları belli değil.