HTML5 <audio> Safari de la diffusion en direct de vs pas

Je suis d'essayer d'intégrer un élément HTML5 audio pointant vers MP3 ou OGG données servi par un fichier PHP . Lorsque j'affiche la page dans Safari, les contrôles apparaissent, mais l'INTERFACE utilisateur dit "Émission en Direct." Lorsque je clique sur jouer, le son démarre comme prévu. Une fois qu'il se termine, cependant, je ne peux pas commencer à y jouer à nouveau en cliquant sur jouer. Même en utilisant l'API JS sur l'élément audio et réglage currentTime à 0 échoue avec une erreur d'index exception.

Je soupçonne les en-têtes du script PHP ont été le problème, en particulier manque une longueur de contenu. Mais ce n'est pas le cas. Les en-têtes de réponse inclut un Contenu de Longueur pour indiquer l'audio est de taille finie. En outre, tout fonctionne comme prévu dans Firefox 3.5+. J'ai peut-cliquez sur l'élément audio à plusieurs reprises pour entendre le son de relecture.

Si je supprime le script PHP à partir de l'équation et de servir une copie statique du fichier MP3, tout fonctionne bien dans Safari.

Est-ce à dire Safari est le traitement de l'audio src Url avec des paramètres de requête différemment que les Url qui n'en ont pas? Quelqu'un a une chance pour que cela fonctionne?

Mon exemple simple de la page est:

<!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>

En-Têtes HTTP de 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

En-Têtes HTTP de l'accès au fichier direct:

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

J'ai essayé de coder en dur le Accept-Ranges-tête dans le script, mais pas de chance.

  • Je ne sais pas si vous vous êtes averti à propos de l'édition, mais j'ai édité ma réponse à inclure un cas de test qui fonctionne pour moi, et semble correspondre à ce que vous faites. Pouvez-vous vérifier si mon cas de test qui fonctionne pour vous ainsi?