HTML5 будет поддерживать доступ офлайнового кэшируемого аудио?

Мы хотим сделать основанное на аудио веб-приложение, которое будет иметь много звуковых отрывков. Мы хотим кэшировать эти файлы так, чтобы производительность была хороша и не зависела от скорости сети. Действительно ли HTML5 может кэшировать аудио для режима офлайн?

9
задан milesmeow 3 June 2010 в 21:55
поделиться

3 ответа

Мне определенно кажется, что этот должен работать, и я не могу найти никакой документации, в которой говорится, что он не должен работать (либо от W3C, либо от таких поставщиков, как Apple), но размещение аудиофайлов в качестве ресурсов в манифесте кеша просто не работает с Safari, по крайней мере, на iPad и iPhone.

Звуки воспроизводятся нормально, когда приложение находится в сети (хотя кажется, что оно загружает их каждый раз заново, а не кэширует), и оно не жалуется на отсутствие ресурсов в автономном режиме (что происходит немедленно, если вы забудьте включить ресурсы JavaScript, CSS, HTML или изображения).

Вместо того, чтобы жаловаться (или загружать); если у элемента есть элемент управления, этот элемент управления заменяется полем с надписью «Невозможно воспроизвести аудиофайл.». В качестве альтернативы, если это элемент без элемента управления, то есть доступ к нему осуществляется через JavaScript для .play (), тогда он просто не воспроизводится (это не вызывает никаких ошибок, просто нет звука, в противном случае JavaScript продолжает выполняться как обычно).

Я тестировал это с довольно маленькими (<20k) файлами, и результат тот же, так что, похоже, это не связано с размером, просто полный отказ от копирования. Я не уверен, можно ли кодировать звук как ресурс на странице (например,закодировано в base64) так, как вы можете с изображениями, но я собираюсь исследовать этот вариант - я подозреваю, что это было бы возможно. Я пробовал кодировать аудиоданные в виде строк URI данных и даже пробовал генерировать звук на лету - оба работают нормально в Safari на рабочем столе, но не работают в ОС iPhone / iPad (по крайней мере, в версии 3.x - у меня есть не пробовал на iOS 4, но он не выйдет в течение недели и не ожидается для iPad в течение нескольких месяцев, даже если они исправят это).

Я полагаю, что отказ кэшировать звуковые файлы в iOS является ошибкой реализации или предполагаемой ограниченной функциональностью. Это, безусловно, раздражает и является препятствием для многих случаев использования.

Я не уверен, что происходит с другими клиентами HTML5, мне было бы интересно узнать (в частности, на Andriod). Поддержка звука Google также не была звездной, поэтому она может страдать от тех же ограничений.

8
ответ дан 4 December 2019 в 21:48
поделиться

Я не вижу причин, по которым вы не можете указать аудиофайлы в манифесте кэша .

0
ответ дан 4 December 2019 в 21:48
поделиться

Вы всегда можете разработать слой декодирования/кодирования, который будет общаться с клиентской SQLlite DB

1
ответ дан 4 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: