Preciso criar uma rotina em PHP para pegar o tempo de execução (duração) de um arquivo de áudio .wav.
Algum dos amigos poderia me dar uma luz?
Obrigado.
Preciso criar uma rotina em PHP para pegar o tempo de execução (duração) de um arquivo de áudio .wav.
Algum dos amigos poderia me dar uma luz?
Obrigado.
http://snipplr.com/view/285/read-wav-header-and-calculate-duration/
function wavDur($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 str_pad($minutes,2,“0”, STR_PAD_LEFT).":".str_pad($seconds,2,“0”, STR_PAD_LEFT);
}
}
Obrigado, vou testar.
Não consegui fazer funcionar, coloquei em uma aplicação blank o código abaixo e ao executar recebo a mensagem: Parse error: syntax error, unexpected ‘$this’ (T_VARIABLE) in C:\Program Files (x86)\NetMake\v8\wwwroot\scriptcase\app\Mercados\blank\index.php on line 1014
$file = ‘c:/sinpol.wav’;
$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);
echo(‘Tempo: ‘.$minutes.’:’.$seconds);
}