Wieder ich.
Ignoriert bitte meine ursprüngliche Antwort - flv4php scheint die width- und height-Angaben gar nicht auszuwerten, sondern liest sie an anderer Stelle aus.
Ich habe mir mal Klawischniggs Antwort genauer angeschaut und dabei festgestellt, dass die Größenangabe anscheinend als 12bit-Fließkommawert vorliegt.
Als handliche PHP-Funktion liest sich das wie folgt:
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;
else $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;
return (2 << $high1) + (($mantissa << $high1) >> 7);
}
Christoph