.avi-Dateiheader auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • .avi-Dateiheader auslesen

    Ich möchte den header einer .avi-Datei auslesen, um herauszufinden, wie lang der Film ist. Ich habe Schwieirgkeiten, an die gewünschten Header-Informationen zu kommen.

    DarkMight0 hat mal so etwas für MP3s gebaut, und sein Skript habe ich versucht für avis umzustricken. Wie der .avi-header aufgebaut ist, meine ich auf http://www.fastgraph.com/help/avi_header_format.html und http://msdn.microsoft.com/archive/de...rstructure.asp herausgefunden zu haben (auch wenn ich die Angaben etwas widersprüchlich finde, aber das ist im Moment noch nicht mal relevant).

    Mein Code liefert mir aber Resultate, die keinen Sinn machen. Entdeckt jemand, wo der Fehler liegt?

    PHP-Code:
    <?php
            $binaer 
    '';
            echo 
    $filename."<br>\n";

            
    $file_handle fopen ($dir.$filename'rb');

            if (!
    $file_handle)
            {
                echo 
    "Datei konnte nicht geöffnet werden.<br>\n";
                continue;
            }

            for (
    $bytenr 0$bytenr 88$bytenr++)
            {
                
    $header fread ($file_handle1);
                
    $byte decbin(ord($header));
                
    $byte str_pad ($byte,8,"0",STR_PAD_LEFT);
                
    $binaer sprintf ("%s%s"$binaer,$byte);
            }

            
    // Die einzelnen Werte extrahieren und in Dezimal-Werte umwandeln
            
    $binaerer_header substr($binaer,(32*8));
            
            
    $binaerer_header chunk_split($binaerer_header, (4*8), "-");
            
    $binaerer_header_array explode("-"$binaerer_header);
            foreach (
    $binaerer_header_array as $vier_bytes) {
            
              
    $dezimaler_header_array[] = bindec($vier_bytes);
              
              echo 
    "dezimal: ".bindec($vier_bytes).", binär: ".$vier_bytes."<br>";  
            
            }
    ?>
    Das Skript gibt mir eine Liste der extrahierten Binärdaten mit Dezimalübersetzung aus. Einige der Werte sind aber Null, andere unrealistisch:

    dezimal: 1468137472, binär: 01010111100000100000000000000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 268500992, binär: 00010000000000010000000000000000
    dezimal: 659292928, binär: 00100111010011000000001100000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 33554432, binär: 00000010000000000000000000000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 3758161920, binär: 11100000000000010000000000000000
    dezimal: 402718720, binär: 00011000000000010000000000000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 0, binär: 00000000000000000000000000000000
    dezimal: 0, binär:
    Die Angabe in der dritten Zeile sollte laut der Microsoft-Seite (Link s.o.) dwMicroSecPerFrame sein, also die Anzeigedauer eines Frames. Mein Skript gibt aber eine Null aus. Das nur als Beispiel, warum das irgendwie nicht stimmen kann.
    Irgendwelche Lösungsansätze?
    Zuletzt geändert von amazed; 10.07.2005, 23:17.

  • #2

    http://script.vanta.ru/download.php?id=1134&clas=0
    lass dir das ergebnis der funktion mal mit print_r() ausgeben.

    Kommentar

    Lädt...
    X