HTML5 <audio> Safari en vivo vs no

Estoy intentando incrustar un elemento de audio HTML5 que apunta a datos MP3 o OGG servidos por un archivo PHP. Cuando veo la página en Safari, aparecen los controles, pero la interfaz de usuario dice "Transmisión en vivo". Cuando hago clic en reproducir, el audio se inicia como se esperaba. Sin embargo, una vez que termina, no puedo volver a comenzar a jugar haciendo clic en Reproducir. Incluso el uso de la API de JS en el elemento de audio y la configuración de currentTime en 0 falla con una excepción de error de índice.

Sospeché que los encabezados de la secuencia de comandos PHP eran el problema, particularmente faltaba la longitud del contenido. Pero ese no es el caso. Los encabezados de respuesta incluyen una longitud de contenido adecuada para indicar que el audio tiene un tamaño finito. Además, todo funciona como se espera en Firefox 3.5+. Puedo hacer clic en reproducir en el elemento de audio varias veces para escuchar la reproducción del sonido.

Si elimino el script PHP de la ecuación y sirvo una copia estática del archivo MP3, todo funciona bien en Safari.

¿Significa esto que Safari está tratando las URL src de audio con parámetros de consulta de manera diferente a las URL que no las tienen? ¿Alguien tiene suerte de que esto funcione?

Mi página de ejemplo simple es:

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <audio controls autobuffer>
      <source src="say.php?text=this%20is%20a%20test&format=.ogg" />
      <source src="say.php?text=this%20is%20a%20test&format=.mp3" />
    </audio>
  </body>
</html>

Encabezados HTTP del script PHP:

HTTP/1.x 200 OK
Date: Sun, 03 Jan 2010 15:39:34 GMT
Server: Apache
X-Powered-By: PHP/5.2.10
Content-Length: 8993
Keep-Alive: timeout=2, max=98
Connection: Keep-Alive
Content-Type: audio/mpeg

Encabezados HTTP desde el acceso directo a archivos:

HTTP/1.x 200 OK
Date: Sun, 03 Jan 2010 20:06:59 GMT
Server: Apache
Last-Modified: Sun, 03 Jan 2010 03:20:02 GMT
Etag: "a404b-c3f-47c3a14937c80"
Accept-Ranges: bytes
Content-Length: 8993
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: audio/mpeg

Intenté codificar el encabezado Accept-Ranges en el script también, pero no tuve suerte.

Respuestas a la pregunta(4)

Su respuesta a la pregunta