1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| function joinWaveFiles($wavs) {
$fields = join('/',array( 'H8ChunkID', 'VChunkSize', 'H8Format',
'H8Subchunk1ID', 'VSubchunk1Size',
'vAudioFormat', 'vNumChannels', 'VSampleRate',
'VByteRate', 'vBlockAlign', 'vBitsPerSample' ));
$data = '';
foreach ($wavs as $wav){
$fp = fopen($wav, 'rb');
$header = fread($fp, 36);
$info = unpack($fields, $header);
// read optional extra stuff
if($info['Subchunk1Size'] > 16){
$header .= fread($fp, ($info['Subchunk1Size']-16));
}
// read SubChunk2ID
$header .= fread($fp, 4);
// read Subchunk2Size
$size = unpack('Vsize', fread($fp, 4));
$size = $size['size'];
$iSize += $size;
// read data
$data .= fread($fp, $size);
}
if ( file_exists('/xxx/'.$sFilename) ) {
//exit;
}
$sFilename = 'typo3temp/'.date('YmdHis').'.wav';
$fp = fopen('/xxx/'.$sFilename, 'w');
fwrite($fp, $header . pack('V', strlen($data)) . $data);
fclose($fp);
//header('Location: /app/'.$sFilename);
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Pragma: no-cache');
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Content-Type: audio/x-wav');
header('Content-Length: ' .filesize('/home/mediadev/sd/chennevieres/trunk/app/'.$sFilename));
header('Content-Disposition: attachment; filename="captcha.wav"');
header('Content-Transfer-Encoding: binary');
readfile('/home/mediadev/sd/chennevieres/trunk/app/'.$sFilename);
exit;
} |
Partager