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
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.
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