Por lo tanto, tengo un script php que envía mi archivo mp3 a la etiqueta de audio de html5. El problema es que en Safari, la etiqueta audio.duration no funciona y devuelve infinito. Si configuro el src del audio directamente en el archivo todo funciona bien. Pero no quiero que mis usuarios vean la ruta al archivo.audio.duration devuelve Infinity en Safari cuando se sirve mp3 desde PHP
De todos modos, así es como estoy enviando mis encabezados desde el PHP.
Ya he intentado tener los rangos de contenido. Eso no ayudó.
if (file_exists($filename)) {
$fp = fopen($filename, 'r');
$etag = md5(serialize(fstat($fp)));
fclose($fp);
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg");
header('Content-Length: ' . (string)(filesize($filename)));
header('Content-Disposition: inline; filename="' . $filename . '"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
header('Etag: ' . $etag);
//GetContentRange($filelength);
readfile($filename);
exit;
}
else {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
echo "no file";
}
Hola @smurf también veo la primera llamada a la conexión de audio con "bytes 0-1" en la cabecera de la gama. ¿Pero puede ser más específico a lo que se refiere con "devolverlo"? ¿Qué es esto, en este caso? Puedo devolver un byte utilizando el encabezado Content-Range en la respuesta. ¿Es eso lo que quieres decir? – Hewins