HTML5 <аудио> прямой эфир Safari против не

Я пытаюсь встроить аудиоэлемент HTML5, указывающий на данные MP3 или OGG, обслуживаемые файлом PHP. Когда я просматриваю страницу в Safari, появляются элементы управления, но пользовательский интерфейс говорит: «Прямая трансляция». Когда я нажимаю кнопку воспроизведения, звук начинается, как и ожидалось. Однако, как только он закончится, я не могу начать воспроизведение снова, нажав кнопку воспроизведения. Даже использование JS API для аудиоэлемента и установка значения currentTime в 0 завершается с ошибкой индексации.

Я подозревал, что проблема заключается в заголовках из скрипта PHP, в частности, отсутствует длина контента. Но это не так. Заголовки ответа включают в себя соответствующую длину содержимого для указания конечного размера звука. Более того, в Firefox 3.5+ все работает как положено. Я могу нажать кнопку воспроизведения на аудиоэлементе несколько раз, чтобы услышать воспроизведение звука.

Если я уберу скрипт PHP из уравнения и предоставлю статическую копию файла MP3, в Safari все работает нормально.

Означает ли это, что Safari обрабатывает URL-адреса аудио-источника с параметрами запроса иначе, чем те, у которых их нет? У кого-нибудь есть удача заставить это работать?

Мой простой пример страницы:

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

Заголовки HTTP из скрипта 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

Заголовки HTTP из прямого доступа к файлу:

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

Я тоже пытался жестко запрограммировать заголовок Accept-Ranges в скрипте, но безуспешно.

Ответы на вопрос(4)

Ваш ответ на вопрос