Nasıl PHP kodu bir Flash video dosyasının boyutlarını elde edebilirsiniz?

5 Cevap php

Kullanıcıların her boyuttaki video dosyalarını yükleyebilirsiniz bir uygulama var, ve ben bir PHP komut dosyası bir Flash video dosyası (FLV veya f4v) ve yükseklik / genişlik tespit edebilmek istiyorum ben boyutu player olabilir, böylece uygun. Ben saf bir PHP çözüm isterdim, ama ben bir komut satırı aracı için dışarı bombardımanı ve (böyle bir araç varsa) çıktı ayrıştırma açık olurdu.

Şimdiden teşekkürler!

5 Cevap

ffmpeg bile php module o var, muhtemelen en iyi bahistir.

ffmpeg-i "dosyaadı"

Alternativly doğrudan dosya açma ve meta bilgileri okuyarak flv dosyasından bilgileri okuyabilir.

Eğer sunucu üzerinde kontrole sahip veya bir PHP çözüm istiyorsanız, getID3 bir göz yok çünkü ffmpeg kullanmak yapamıyorsanız, bir FLV module o dönmelidir var bir çözünürlük.

Orada da flv4php.

Dosyanın başlık (her zaman böyle olmayabilir) Videonun boyutları varsa, siz de aşağıdaki kodu kullanabilirsiniz:

function flvdim($name) {
    $file = @fopen($name, 'rb');
    if($file === false)
    	return false;

    $header = fread($file, 2048);
    fclose($file);
    if($header === false)
    	return false;

    return array(
    	'width' => flvdim_get($header, 'width'),
    	'height' => flvdim_get($header, 'height')
    );
}

function flvdim_get($header, $field) {
    $pos = strpos($header, $field);
    if($pos === false)
    	return false;

    $pos += strlen($field) + 2;
    return flvdim_decode(ord($header[$pos]), ord($header[$pos + 1]));
}

function flvdim_decode($byte1, $byte2) {
    $high1 = $byte1 >> 4;
    $high2 = $byte2 >> 4;
    $low1 = $byte1 & 0x0f;

    $mantissa = ($low1 << 4) | $high2;

    // (1 + m·2^(-8))·2^(h1 + 1) = (2^8 + m)·2^(h1 - 7)
    return ((256 + $mantissa) << $high1) >> 7;
}

Pleaso kod ters ikili dosyalardan mühendislik, ama oldukça iyi iş gibi görünüyor unutmayın.

Alternatif olarak, Tommy Lacroix FLV dosyaları dışarı metalar okumak için çok ilginç bir çözüm gibi görünüyor.

Ben düzenli getimagesize () kullanabilirsiniz duydum ama henüz denemedim. Bir deneyin.