Länge einer Wav-Datei auslesen

Gibt es eine Möglichkeit, die Länge einer Wav-Datei auszulesen?
Hintergrund:
Nach dem Duschen schaltet Radio ein. Nach 4 Minuten liest Steffi die Wetterprognosen vor. Danach kommt noch mal ein Moment Radio. Mit der Info zur Wav-Länge Wetterprognose soll der Timer für Radio danach dementsprechend gestartet werden.

Hi,

jupp geht

 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);
    }
    }

da bin ich wahrscheinlich zu wenig php-fit. Beim Durchlauf (mit Angabe des Pfades mit $file kommt da nichts raus.

Hi,

kein problem…

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);
    }
}

$laenge = GetLength("pfad\zu\meiner\datei.wav");

echo "meine datei ist" .$laenge ." sekunden lang";

hier hast du nen kleines beispiel :wink:

Danke Dir:)

Hallo Dave,

gibts das auch für mp3 ?

Danke

Ich nutze für die Längenberechnung der Durchsagen die Class getID3. Funktioniert so ziemlich mit allen Medienformaten die es derzeit gibt.

http://getid3.sourceforge.net/

Kann natürlich wesentlich mehr als nur die Länge einer Mediendatei ausgeben.

Demo: http://www.getid3.org/demo/Lyrics3.mp3.html

Danke für die Info.

Sobald ich Zeit finde werd ich das mal in IPS einbinden.

Nur zur Info

<?php

    require_once('D:/IP-Symcon/scripts/getid3/getid3.php');

    $filename = 'D:\Mediathek\Musik\AC-DC\High Voltage\04 Live Wire.mp3';
    GetFileInfo($filename);
    
    function GetFileInfo($filename) {

    $getID3 = new getID3;
    $ThisFileInfo = $getID3->analyze($filename);
    getid3_lib::CopyTagsToComments($ThisFileInfo);

    echo $ThisFileInfo['comments_html']['artist'][0]."
"; // artist from any/all available tag formats
    echo $ThisFileInfo['tags']['id3v2']['title'][0]."
";  // title from ID3v2
    echo $ThisFileInfo['audio']['bitrate']."
";           // audio bitrate
    echo $ThisFileInfo['playtime_string']."
";            // playtime in minutes:seconds, formatted string

//    echo '<pre>'.htmlentities(print_r($ThisFileInfo, true)).'</pre>';
    }

?>


schon eingebunden und funktioniert.

Danke