Linuchs: Spiellänge von Audio-Dateien auslesen

Beitrag lesen

Hallo Robert,

Naja, wenn du die Dateien streamst um die Länge auszulesen, müssen Teile davon auch zu dir übertragen werden. Also kannst du doch die Dateien in ein temporäres Verzeichnis herunterladen und dann lokal analysieren.

Ungern, aber geht wohl nicht anders. Habe ich also gemacht.

Im heruntergeladenen Programm demo.basic.php gibt es diese Funktion:

function GetLength($file) {
    $fp = fopen($file, 'r');
    if (fread($fp,4) == "RIFF") {
      fseek($fp, 20);
      $rawheader = fread($fp, 16);
      $header = unpack('vtype/vchannels/Vsamplerate/Vbytespersec/valignment/vbits',$rawheader);
      $pos = ftell($fp);
      while (fread($fp,4) != "data" && !feof($fp)) {
        $pos++;
        fseek($fp,$pos);
      }
      $rawheader = fread($fp, 4);
      $data = unpack('Vdatasize',$rawheader);
      $sec = $data['datasize']/$header['bytespersec'];
      $minutes = intval(($sec / 60) % 60);
      $seconds = intval($sec % 60);
      return round($sec,0);
    }
}

Doch meine mp3-Dateien beginnen mit ID3. Worauf bezieht sich RIFF ?

Linuchs