Изначально это было опубликовано на моем собственном сайте.

Некоторое время назад я задокументировал странную ошибку с веб-аудио на iOS:

На некоторых страницах Сеанса, помимо аудиоплеера для мелодий (используя Web Audio API), также есть встроенные видеоролики YouTube (используя элемент video). Нажмите кнопку воспроизведения на аудиоплеере; без звука. Нажмите кнопку воспроизведения на видео YouTube; вы получаете звук. Теперь вернитесь к аудиоплееру, и вдруг вы услышите звук!

Это похоже на то, как воспроизведение элемента video или audio «подталкивает» браузер к пониманию, что он также должен воспроизводить звук из API веб-аудио.

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

Я нашел обходной путь, но он был действительно хакерским. Проигрывая беззвучный mp3-файл продолжительностью в одну секунду с помощью audio, вы могли «подтолкнуть» звук к поведению. Затем вы можете использовать API веб-аудио, и он будет воспроизводиться последовательно.

Что ж, все изменилось с последней версией Mobile Safari. Теперь происходит то, что материал веб-аудио воспроизводится … в течение одной секунды. А потом останавливается.

Я удалил хакерский обходной путь, и API веб-аудио снова начал вести себя нормально…но ваше устройство не может быть переведено в беззвучный режим.

Хорошей новостью является то, что поведение веб-аудио теперь кажется стабильным. Он воспроизводится только в том случае, если звук устройства не отключен. Это ограничение не распространяется на элементы video и audio; они все равно будут воспроизводиться, даже если на вашем устройстве отключен звук.

Это несоответствие между двумя разными способами воспроизведения звука довольно странное, но, по крайней мере, теперь поведение веб-аудио предсказуемо.

Вы можете послушать Web Audio API в действии, перейдя к любой мелодии на сеансе и нажав кнопку воспроизвести аудио.

Изначально это было опубликовано на моем собственном сайте.