html5 аудио теги пожирают ресурсы - PullRequest
1 голос
/ 17 мая 2011

У меня есть страницы, где мне нужно проигрывать десятки маленьких аудиофайлов, когда пользователь нажимает на вещи.Отзывчивость очень важна.

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

Спасибо.

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

Это разумное и, вероятно, правильное решение. Недавно я написал демонстрационное приложение (http://www.soundscribe.com), которое интенсивно использует отдельные (и одновременные) аудиоклипы в HTML5. IE9 и FF3 / 4 хорошо справляются с этим. У Chrome есть некоторые проблемы, которые, по-видимому, связаны с одновременным воспроизведением (что, вероятно, не относится к вашему приложению.) Самый большой блок, который я ударил, был в IE9, который, кажется, имеет загадочное ограничение на количество аудиообъектов, которые могут существовать одновременно. Максимальное значение составляет около 40, после чего IE9 будет молча не удается загрузить файл. FF и Chrome пытаются поддерживать неограниченное количество.

Альтернативный подход - поместить все аудио в один файл и изменить смещение для воспроизведения - это плохой выбор по нескольким причинам. Кодирование гораздо сложнее, вам нужно следить за дополнительными метаданными (с чего начинается клип, как долго он длится), и он может работать немного по-разному в разных браузерах. И что хуже всего, на самом деле нет никакого способа узнать, когда ваш клип полностью загружен. Вы можете только сказать, когда клип «может воспроизводиться», что определяется браузером на основе размера аудиофайла и текущей скорости загрузки. Это означает, что даже после того, как браузер сообщит, что аудиоклип готов, вы не сможете воспроизвести клип где-нибудь ближе к концу.

2 голосов
/ 02 августа 2012

Что я испытываю при использовании SoundManager2 (аудио Javascript lib), так это то, что ни у Chrome, ни у Firefox нет проблем с загрузкой и воспроизведением нескольких (более 100) звуков через их возможности HTML5 (Firefox должен играть в OGG)

С IE9 это другая история. Похоже, у него есть ограничение на загрузку и воспроизведение не более 40 звуков. : - (

Поскольку игра, которую мы разрабатываем, требует, чтобы в течение 1 минуты проигрывалось более 50 звуков, мы должны использовать Flash для воспроизведения звуков в IE9. К счастью, SM2 делает это тоже

Я также подтверждаю это поведение в режиме html5, используя jPlayer. Я могу создать только 40 экземпляров jPlayer. Каждый может предварительно загрузить и воспроизвести звук, который он определяет. 41-й и последующие экземпляры завершатся с ошибкой в ​​IE9 / Windows7

Ошибка: «Не удалось загрузить медиа-URL»

0 голосов
/ 18 мая 2011

Это похоже на разумный подход.Однако вам необходимо учесть несколько моментов.

  • Каждый аудиоклип должен храниться в памяти.Хотя в большинстве случаев это не имеет значения, пользователи с множеством открытых вкладок, несколькими открытыми программами или старыми компьютерами могут замедляться на своем компьютере.Особенно, если звуковые файлы большие.
  • С точки зрения удобства использования, если я слышу звук каждый раз, когда нажимаю кнопку на сайте, я немедленно покидаю
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...