Изначально это было опубликовано на моем собственном сайте.
Некоторое время назад я задокументировал странную ошибку с веб-аудио на iOS:
На некоторых страницах Сеанса, помимо аудиоплеера для мелодий (используя Web Audio API), также есть встроенные видеоролики YouTube (используя элемент
video
). Нажмите кнопку воспроизведения на аудиоплеере; без звука. Нажмите кнопку воспроизведения на видео YouTube; вы получаете звук. Теперь вернитесь к аудиоплееру, и вдруг вы услышите звук!
Это похоже на то, как воспроизведение элемента
video
илиaudio
«подталкивает» браузер к пониманию, что он также должен воспроизводить звук из API веб-аудио.
Это происходило на устройствах iOS, на которых отключен звук, но я также получал сообщения об этом на устройствах с включенным звуком. Но это такая раздражающе прерывистая ошибка, которую действительно трудно воспроизвести постоянно. Иногда звук не воспроизводится. Иногда это так.
Я нашел обходной путь, но он был действительно хакерским. Проигрывая беззвучный mp3-файл продолжительностью в одну секунду с помощью audio
, вы могли «подтолкнуть» звук к поведению. Затем вы можете использовать API веб-аудио, и он будет воспроизводиться последовательно.
Что ж, все изменилось с последней версией Mobile Safari. Теперь происходит то, что материал веб-аудио воспроизводится … в течение одной секунды. А потом останавливается.
Я удалил хакерский обходной путь, и API веб-аудио снова начал вести себя нормально…но ваше устройство не может быть переведено в беззвучный режим.
Хорошей новостью является то, что поведение веб-аудио теперь кажется стабильным. Он воспроизводится только в том случае, если звук устройства не отключен. Это ограничение не распространяется на элементы video
и audio
; они все равно будут воспроизводиться, даже если на вашем устройстве отключен звук.
Это несоответствие между двумя разными способами воспроизведения звука довольно странное, но, по крайней мере, теперь поведение веб-аудио предсказуемо.
Вы можете послушать Web Audio API в действии, перейдя к любой мелодии на сеансе и нажав кнопку воспроизвести аудио.
Изначально это было опубликовано на моем собственном сайте.