заголовки http для отправки файла в html5 ‹аудио›

Я хочу использовать новый тег html5 для воспроизведения файла wav (в настоящее время поддерживается только в FF).

https://developer.mozilla.org/En/HTML/Element/Audio

Я использую команду php readfile, чтобы получить wav-файл с жесткого диска и записать его в ответ http.

Но это не работает. Звуковой виджет в firefox просто постоянно запускает анимацию загрузки.

С тегом все в порядке, так как я могу указать другой URL-адрес в его src/source, и он отлично работает. Я могу использовать тег, который загружает файл и воспроизводит его с помощью Quicktime.

Поэтому я думаю, что, возможно, это один/все заголовки контента.

Используя расширение FF httpfox, я вижу, что эти заголовки ответов поступают с сервера:

(Status-Line)   HTTP/1.1 200 OK
Date    Mon, 12 Oct 2009 03:04:33 GMT
Server  securesauce
Cache-Control   private
Expires Mon, 26 Jul 1997 05:00:00 GMT
Pragma  private
Vary    Accept-Encoding
Content-Encoding    gzip
Content-Length  8217
Keep-Alive  timeout=15, max=100
Connection  Keep-Alive
Content-Type    audio/x-wav

Так что все выглядит так, как я ожидал. Единственные заголовки, которые я явно устанавливаю в сценарии (остальные устанавливаются в другом месте приложения):

Cache-Control   private
Pragma  private
Content-Type    audio/x-wav

Когда я пробовал другой wav-файл (случайный из Интернета), httpfox не отображал никаких заголовков ответов.

Поскольку это php-файл, отправляющий содержимое, я не могу просто отправлять заголовки, так как мне нужно было бы по крайней мере отправить тип содержимого.

Есть идеи?

Выдержка из источника:

header('Cache-Control: private');
header('Pragma: private');
header("Content-Type: $contentType");
readfile($filepath);
exit;

person Redzarf    schedule 12.10.2009    source источник


Ответы (4)


Какие форматы и типы MIME поддерживаются Mozilla, задокументировано на их вики. Не похоже, что тип MIME является вашей проблемой, но вполне возможно, что этот файл WAVE не использует обычный звук PCM, который поддерживает Firefox. WAVE на самом деле может содержать другие форматы, такие как ADPCM, MP3 и так далее. Они могут поддерживаться QuickTime, но нет гарантии, что они будут воспроизводиться в браузере HTML5. Чтобы быть уверенным, попробуйте открыть файл в аудиоредакторе и снова сохранить его как файл WAVE PCM.

person foolip    schedule 17.10.2009
comment
Ах, вот оно! Файлы wav записываются Asterisk в GSM610. - person Redzarf; 19.10.2009
comment
После нескольких часов возни с заголовками в моем проекте django это поставило меня на правильный путь! Слава вам, сэр. - person HurnsMobile; 26.10.2010

Вам не хватает X-Content-Duration. Это необходимо для того, чтобы клиент точно выполнял поиск во время воспроизведения, и некоторые клиенты отказываются от мультимедийного содержимого, если не включена продолжительность. Также включите Content-Duration, который постепенно заменяет X-Content-Duration.

Вот дополнительная информация: Настройка веб-серверов для видео и аудио HTML5 Ogg

Кроме того, я бы не стал использовать gzip или шифрование на вашем выходе.

person Victor Stoddard    schedule 11.09.2013

Вы пробовали URL-адрес аудиофайла прямо в браузере? Если он содержит ошибку или предупреждение, которое сделает ваш заголовок устаревшим. а также попробуйте открыть аудиофайл из браузера, посмотрите, правильно ли он.

person Darkerstar    schedule 12.10.2009
comment
Спасибо, да, пробовал, файл нормально воспроизводится через quicktime. (Прямая загрузка — вот как я получил заголовки через httpfox.) Я также могу сохранить файл, а затем воспроизвести его с помощью проигрывателя Windows Media. - person Redzarf; 12.10.2009

У меня была такая же проблема с отправкой аудиофайла ogg с помощью php. Игра с заголовками не помогла.

Затем я обновил firefox 3.5.2 до 3.5.4 - это решило проблему.

person ben    schedule 29.10.2009