В Safari 13 звук больше не воспроизводится, если не вызывается getUserMedia - PullRequest
2 голосов
/ 10 октября 2019

Я записываю аудио, используя getUserMedia, затем позволяю пользователю нажать кнопку, чтобы прослушать запись или другой буфер. Все это прекрасно работало в течение года, поэтому я не думаю, что нарушаю какое-либо из правил, приводящих к приостановке AudioContext. И, в любом случае, я тестирую AudioContext, чтобы убедиться, что он не приостановлен в моем обработчике кнопок.

Все это прекрасно работает во всех современных системах со многими браузерами. Однако это не воспроизводит звук в Safari 13 в iOS. Он вернется из обещаний, как если бы он воспроизводил звук, но ничего не звучит, пока я снова не позвоню getUserMedia.

В качестве эксперимента я поместил следующую строку в верхней части моего обработчика кнопок:

navigator.mediaDevices.getUserMedia({
    audio: {
        echoCancellation: {ideal: false},
    }
});

И это работает!

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

Единственная подсказка, которую я имею, это то, что как только я выполняю getUserMedia, я сохраняю запись открытой в Safari (Я делаю это потому, что у Safari есть тайм-аут - когда я запрашиваю микрофон, он открывает диалоговое окно, чтобы разрешить микрофон. Иногда пользователю может потребоваться 90 секунд, чтобы обойти нажатие кнопки «запись», и если я нене оставляйте микрофон открытым, снова появляется диалоговое окно.)

У кого-нибудь есть идеи, что происходит? И я не смог найти никакого технического описания Safari и аудио. Есть ли что-нибудь кроме стандартного MDN?

1 Ответ

1 голос
/ 10 октября 2019

IOS13 также сломал одно из наших приложений. Он работал хорошо в течение многих лет. Не выдается никаких ошибок, и мы не нарушаем никаких правил. Вот ссылка на мой пост: Использовали ли IOS13 поврежденные теги , используемые в качестве аудио-буферов, связанных с аудио-контекстом?

Даже если это другое использование API, я полагаюэто связано. Apple явно что-то сломал в этом новом выпуске.

...