Bonjour à tous,

J'ai un script qui permet de joindre entre eux différents fichiers wav en un seul. Je l'utilise pour une captcha audio.
Je mets ensuite les bons header et je lis le fichier final.

Mon problème est que ma construction de fichier ne doit pas être bonne car le fichier n'est aps bien lu. Sous firefox, un tout peit bout est lu, sous chrome, le fichier est donné comme cassé et sous Safari, cela fonctionne.

Si je télécharge le fichier en local, il fonctionne (en glissant) sous tous les navigateurs.
bref, j'ai beau essayé, je en m'en sors pas.

Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
	}
Si quelqu'un a une idée, je suis preneur ^^.

Merci d'avance.