Почему Chrome или Safari не воспроизводят мой MP3 должным образом? - PullRequest
2 голосов
/ 31 июля 2011

У меня есть веб-приложение, работающее на Glassfish.Приложение написано на Java с использованием сервлетов.

Приложение позволяет загружать файлы и получать прямую ссылку на этот файл.

По некоторым причинам Safari и Chrome (возможно, другие браузеры) имеютпроблемы с воспроизведением файлов MP3 (и других аудио / видео файлов), загруженных в это приложение.

Пример загруженного MP3: http://uploads.graalcenter.org/upload/test.mp3

Иногда Safari загружает файл и воспроизводит его правильно, ноБольшую часть времени он либо остается на «Загрузка ...» навсегда, либо запускается на несколько секунд, а затем прекращает его загрузку.

Мой браузер отправляет заголовки этих запросов:

GET http://uploads.graalcenter.org/upload/test.mp3 HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/535.1+ (KHTML, like Gecko) Version/5.1 Safari/534.48.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://uploads.graalcenter.org/info/test.mp3
Cache-Control: max-age=0

Мой сервер отвечает следующими заголовками ответа:

HTTP/1.1 200 OK
Date: Sun, 31 Jul 2011 02:02:03 GMT
X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.2-b06 Java/Sun Microsystems Inc./1.6)
Content-Length: 1137602
Server: GlassFish Server Open Source Edition 3.2-b06
Content-Type: audio/mpeg
Accept-Ranges: none

Для сравнения, я загрузил этот же файл на сервер Apache здесь .

Сервер отвечаетс этими заголовками:

HTTP/1.1 200 OK
Date: Sun, 31 Jul 2011 02:06:56 GMT
Connection: Keep-Alive
Content-Length: 1137602
Last-Modified: Sun, 31 Jul 2011 02:05:57 GMT
Server: Apache
Etag: "1aa08001-115bc2-4a953f48b6b40"
Content-Type: audio/mpeg
Accept-Ranges: bytes
Keep-Alive: timeout=2, max=100

Файл воспроизводится правильно.

Единственное различие, которое я вижу, состоит в том, что мое приложение не принимает запросы диапазона, но это не должно вызыватькакие-нибудь проблемы, не так ли?

Если я загружаю MP3 из своего веб-приложения через curl, он имеет тот же хэш MD5, поэтому он не повреждает MP3 каким-либо образом.

У кого-нибудь естьЛюбая идея, что может быть причиной того, что MP3 не воспроизводится правильно?

1 Ответ

0 голосов
/ 31 июля 2011

Похоже, проблема была в том, что AppleCoreMedia, плагин, который обрабатывает аудио, не работает правильно, когда не используются данные диапазона. Я бы не стал обвинять Apple в этом, поскольку вполне возможно, что я допустил некоторую ошибку, но в итоге я реализовал заголовок HTTP Range, и теперь он работает каждый раз.

...