Некорректно воспроизводится звук в браузере андроид
Технология WebRTC (голосовые и видеозвонки) хороша тем, что встроена прямо в веб, который, разумеется, прекрасно подходит для WebRTC. Однако иногда веб доставляет немало хлопот, когда нужды WebRTC идут вразрез с общими требованиями к использованию браузеров. Последний пример – автовоспроизведение (далее – «автоплей») аудио/видео, когда у многих пользователей внезапно пропадал звук. Бывший автор webrtcHacks – Dag-Inge Aas – лично столкнулся с этой проблемой. Ниже его размышления: чего ожидать от браузеров в плане автовоспроизведения, последние изменения в Chrome 66+, а также пару советов, как жить с этими ограничениями.
Браузеры не хотят слышать Зло, поэтому политики автоплея выключают звук в любом медиа. Это может быть проблемой для WebRTC-приложений.
Если вы это читаете, то очень вероятно, что вы сталкивались со странным багом в в браузерах Safari 11+ и Chrome 66+. Речь про звуки интерфейса, которые вдруг стало не слышно (например, сигнал входящего звонка), или про неработающий аудиовизуализатор, или про то как не слышно собеседников.
На данный момент баг затронул почти все популярные WebRTC-плееры. Забавно, но похоже что Meet от Google и Chromebox for meetings тоже затронуты.
Корень всех зол: изменения в политиках автоплея (autoplay policies). В этом посте я расскажу про нововведения, как они касаются WebRTC и как бороться с этим в ваших приложениях.
Изменения
Все началось в 2007 году, когда появились iPhone и iOS. Если вы в прошлом работали с Safari для iOS, то возможно замечали, что Safari нужно участие пользователя, чтобы проигрывать элементы <audio> и <video> со звуком. Позже это требование немного ослабили, когда iOS 10 позволила видеоэлементам проигрываться автоматически, но без звука. Это стало проблемой для WebRTC, т.к. элемент <video> должен «видеть» и «слышать» медиапоток. В контексте WebRTC позволять видео автоматически запускаться без звука – это бесполезно, потому что во время видеозвонка надо по умолчанию слышать собеседников, а не нажимать «play» для этого. Как бы то ни было, мало WebRTC-разработчиков занимались Safari для iOS, потому что платформа не поддерживала WebRTC до недавнего времени. До выхода iOS 11.
Впервые я столкнулся с багом, когда тестировал последнюю (на тот момент) рабочую реализацию видеозвонков для iOS. К моему удивлению, оно перестало работать, при этом я был не одинок. Пользователь Github kylemcdonald зарепортил баг getUserMedia на iOS. Решение? Добавить видеоэлементу новое свойство playsinline, что разрешит видео воспроизводиться со звуком. К сожалению, в оригинальном посте про изменения автоплея в Safari разработчики не упоминали WebRTC, но они все же написали про WebRTC отдельно, до релиза. В статье сказано следующее про MediaStreams и воспроизведение звука:
- медиа, использующее MediaStream, будет автоматически воспроизводиться, если веб-страница уже использует камеру/микрофон;
- медиа, использующее MediaStream, будет автоматически воспроизводиться, если веб-страница уже воспроизводит звук. Чтобы воспроизведение звука началось, все еще нужно участие пользователя.
Почему вообще ограничивают автоплей?
Изначально пользователей хотели уберечь от лишних расходов на трафик. В 2007 году передача данных была дорогой (и остается таковой в большей части мира) и лишь немногие сайты были адаптированы под мобильные. Вдобавок автоплей звука был и остается самой раздражающей вещью во всем вебе. Поэтому для воспроизведения (и загрузки) видео требовалось действие пользователя; это давало гарантию, что пользователь в курсе происходящего.
Затем пришел GIF. Гифки – это всего лишь анимации внутри <img>, поэтому им не требовалось «разрешение» пользователя. Однако они могут быть тяжелыми и поэтому доставлять боль пользователям мобильного интернета. Видео щадит трафик, но требует согласия для загрузки – поэтому веб-страницы продолжили использовать GIF. Все изменилось в iOS 10, когда Safari разрешил автоплей с выключенным звуком. С тех пор оптимизация нагрузки – это вопрос разрешенного видео и уход в небытие трехминутных гифок.
Ограничение автоплея в десктопных браузерах
Если поискать, как остановить автоплей звука, то вы найдете немало способов. Недавно новостные агентства выяснили, что когда они используют ПО-НАСТОЯЩЕМУ ГРОМКОЕ аудио после загрузки страницы, пользователи проводят больше времени на сайте и кликают по рекламе. Конечно, так делать на стоит, но все-таки так делают. Поэтому десктопные браузеры последовали примеру Safari и запретили автоплей звука – особенно Chrome, который выкатил новые политики автоплея в 66 версии.
Однако Chrome неожиданно обратился к оригинальному Media Engagement Index (MEI).
The Media Engagement Index (MEI)
MEI – это то, как Chrome измеряет готовность пользователя разрешать автоплей на странице; этот индекс зависит от предыдущего поведения на странице. Посмотреть, как это выглядит, можно здесь: chrome://media-engagement/. MEI считается отдельно для каждого пользовательского профиля и работает в режиме инкогнито (из-за этого разработчикам очень трудно тестировать страницы с нулевым MEI, прежде чем выкатываться в продакшн). Кто-нибудь угадает, что будет дальше?
Не только <audio> и <video>
Выяснилось, что новые политики затронули не только теги <audio> и <video>. Популярный UX-паттерн для WebRTC – показывать пользователю уровень громкости микрофона. Для этого звук анализируется через AudioContext, который берет MediaStream и выводит его сигнал в виде гистограммы. В этом случае не воспроизводится звук, но все же аудиоанализ блокируется из-за AudioContext, который, в теории, позволяет выводить звук.
Пример проверки микрофона
О проблеме впервые сообщили в багтрекере Webkit в декабре, и через шесть дней в Webkit прилетело исправление. Исправление? Не блокировать AudioContext, если страница уже получает аудио и видео.
Так почему вы все еще читаете эту статью? Оказалось, что Chrome сделал ту же ошибку, что и Safari. Хоть это и коснулось многих WebRTC-сервисов, Google помалкивает по этому поводу. Было много попыток заставить их сделать публичное заявление про влияние автоплея на WebRTC, но этого еще не случилось.
Значения MEI мешают тестам
Как мы попали в эту заварушку? Конечно, разработчики должны были тестировать AudioContext eще до изменений в Chrome 66, которые коснулись каждого пользователя. И вот здесь появляется MEI; понимаете, частое взаимодействие со страницей дает вам более высокий MEI, соответственно, разработчики имеют меньше шансов столкнуться с багом, так как аудио уже давно разрешено проигрываться и анализироваться. И да, режим инкогнито не помогает, ведь MEI продолжает считаться и там. Только запуск Chrome с новой учеткой позволит обнаружить баг – факт, который легко могут забыть даже опытные QA-инженеры из Google.
Что должны сделать производители браузеров?
Изменения в основной функциональности трудно выполнить в правильном ключе. Chrome выпустил множество изменений политик автоплея, но ни одно из них не касалось WebRTC или MediaStreams. По-видимому, забытое Permissions API не обновили, так что разработчики не могут тестировать запрос пользовательских действий. Как вариант, можно разрешить AudioContext выводить звук, если страница уже работает с камерой/микрофоном (как это сделал Safari), но это больше смахивает на хак, чем на решение. А еще это не поможет в других случаях анализа звука, когда не используется getUserMedia.
Железобетонное решение для производителей браузеров – позволить media permissions влиять на MEI. Если пользователь дал постоянный доступ к своим камере и микрофону, то логично предположить, что веб-странице можно достаточно доверять, чтобы она воспроизводила звук без дополнительных действий и вне зависимости от того, работает она с камерой/микрофоном или нет. В конце концов, пользователь верит, что вы не будете расшаривать его камеру и микрофон миллионам людей без их ведома. В этом случае воспроизводить звуки интерфейса – наименьшая из проблем.
Как помочь своему приложению
К счастью, есть пара трюков, которые вам помогут. Вот список того, что мы добавили в Confrere, когда столкнулись с проблемой в Safari для iOS.
Добавили playsinline
Чтобы вернуть звук в видео, добавьте атрибут playsinline к видеоэлементу. Этот атрибут хорошо документирован, работает в Safari и Chrome и не имеет побочных эффектов в других браузерах.
Действия пользователя
Чтобы «вылечить» аудиовизуализатор, просто добавьте пользовательское действие. Нам повезло, потому что мы могли добавить (и добавили) на наш тестовый экран множество шагов, подразумевающих явное участие пользователя. Возможно, вам повезло меньше. Пока Google не возьмется за починку, нет другого способа, кроме как вовлекать пользователя.
Нельзя пофиксить звуки интерфейса
Как видите, уже существуют способы устранить проблему, пока не появится долгосрочное решение. Да, и не забудьте подписаться на баг, чтобы получать обновления.
Если при просмотре видеофайлов на устройстве с Android не работает звук, прежде всего перезагрузите смартфон.
По возможности запустите ролик на другом мобильном устройстве или компьютере. Если звука по-прежнему нет, скорее всего, проблема в самом файле.
При подключении проводной гарнитуры происходит размыкание контакта, который передает звук на динамик. Внимательно проверьте соответствующий разъем, в нем не должно быть посторонних предметов.
Способ 1: Обновление Android
Убедитесь, что на устройстве установлена последняя версия операционной системы Андроид, особенно если отсутствие звука в видео не единственная проблема, замеченная во время использования. О том, как проверить наличие обновлений, а также загрузить их, написано в отдельной статье на нашем сайте.
Способ 2: Настройка звука
Звук может быть выключен на уровне системы. Чтобы проверить это, нажимаем «качельку» громкости вверх во время воспроизведения видеоролика.
Или используем элементы управления самого проигрывателя. Обычно громкость увеличивается свайпом вверх по правому или левому краю экрана.
На некоторых устройствах с Android можно отдельно регулировать громкость разных типов звука – уведомлений, мелодии звонка и т.д. Если громкость воспроизведения медиафайлов полностью выключена, описанные выше действия работать не будут. Разберемся, как восстановить звук для медиа на примере смартфона фирмы Samsung. Открываем «Настройки», переходим в раздел «Звуки и вибрация», тапаем «Громкость»
и в графе «Медиа» перетаскиваем ползунок вправо.
Способ 3: Обновление проигрывателя
Видеоплеер может работать некорректно, если его версия устарела. Такое обычно случается, когда в настройках Google Play Маркета отключено автоматическое обновление установленного на устройстве ПО, а юзеры забывают делать это вручную. В этом случае открываем магазин приложений, тапаем на иконку пользователя, переходим в раздел «Мои приложения и игры»,
находим нужную прикладную программу во вкладке «Установленные» и, если для нее готовы апдейты, тапаем кнопку «Обновить».
Способ 4: Поиск конфликтного ПО
Попробуйте вспомнить момент, когда начались проблемы со звуком в видео. Возможно, конфликт спровоцировало какое-нибудь стороннее программное обеспечение, установленное недавно. Прежде чем переходить к удалению софта, стоит проверить эту теорию, загрузив устройство в «Безопасном режиме», при котором работают только стандартные приложения и функции. Продемонстрируем это на примере смартфона Самсунг, но данный способ подойдет практически для любого устройства.
-
Вызываем «Меню выключения», удерживаем сенсорную клавишу «Выключение» и подтверждаем действие.
Обо всех способах загрузки смартфона с Android в «Безопасном режиме» мы уже рассказывали в отдельной статье.
Если в БР звук работает, скорее всего, виновато стороннее ПО. По очереди удаляем то, которое было установлено недавно. Подробнее об удалении приложений на аппарате с Андроид написано в другой статье на нашем сайте.
Способ 5: Очистка кэша
Некоторым пользователям на профильных форумах помогала полная очистка кэшированных данных через Recovery Mode, но лучше начать с менее кардинального способа – очистки кэша той прикладной программы, которая используется для проигрывания видеороликов. Переходим в настройках в раздел «Приложения», находим нужное ПО, открываем его «Меню»,
переходим в раздел «Память» и тапаем «Очистить кэш». Теперь пробуем запустить видеофайл.
При отсутствии результата переходим к полному удалению кэша, хранящегося в системе. В данном случае будет использовано устройство Samsung, но похожие действия потребуются и на телефонах других производителей.
О других комбинациях для входа в Recovery Mode подробно написано в одной из наших статей.
Способ 6: Альтернативное ПО
Если проблемы со звуком появляются при воспроизведении только некоторых видеофайлов, возможно, в этом плеере не хватает каких-нибудь кодеков. Попробуйте установить другой проигрыватель, например, VLC for Android, который воспроизводит любые аудио и видеоформаты.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Если вы столкнулись с ситуацией, когда на компьютере звук присутствует, и вы в этом убедились, открыв медиапроигрыватель, и включив вашу любимую музыку, а в самом обозревателе не работает, то вы зашли по нужному адресу. Мы предлагаем некоторые советы для решения данной проблемы.
Пропал звук в обозревателе: что делать
Способ 1: Проверка звука
Итак, самое первое и банальное, это то, что может быть программно отключен звук, и чтобы в этом удостовериться, проводим следующие действия:
-
Нажимаем правой кнопкой на значке громкости, который находится обычно недалеко от часов. После выпадет меню, в котором выбираем «Открыть микшер громкости».
Способ 2: Очистка кэш-файлов
Если вы убедились, что с настройками громкости было все в порядке, то идём дальше. Возможно, следующий простой шаг поможет избавиться от текущей проблемы со звуком. Для каждого веб-браузера это делается по-своему, но принцип один. Если вы не знаете, как очистить кэш, то нижеуказанная статья поможет вам разобраться.
После проведённой чистки кэш-файлов, закройте и снова запустите обозреватель. Посмотрите, воспроизводится ли звук. Если звук так и не появился, то читаем далее.
Способ 3: Проверка Flash плагина
Данный программный модуль может быть удалён, не загружен либо отключён в самом веб-обозревателе. Чтобы установить Флеш Плеер правильным образом, ознакомьтесь со следующей инструкцией.
Для того, чтобы активировать данный плагин в обозревателе, можете прочесть следующую статью.
Далее запускаем веб-обозреватель, проверяем звук, если нет звука, то возможно необходимо перезагрузить полностью ПК. Теперь попробуем снова, есть ли звук.
Способ 4: Переустановка обозревателя
Затем, если после проверки всё равно нет звука, тогда проблема может быть глубже, и потребуется переустановить веб-браузер. Вы можете подробнее узнать, как переустановить следующие веб-обозреватели: Opera, Google Chrome и Яндекс.Браузер.
На данный момент — это все основные варианты, которые решают проблему, когда не работает звук. Надеемся, советы вам помогут.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Совершенно любой смартфон позволяет проигрывать различные звуки, многие из которых предусмотрены системой специально для уведомлений. Однако при некоторых обстоятельствах могут возникать проблемы с их воспроизведением. В ходе сегодняшней инструкции мы расскажем о нескольких причинах и методах устранения подобного явления.
Устранение проблем со звуком на Android
Рассматриваемая неполадка на Андроид-устройствах может быть связана с несколькими факторами, начиная от низкого уровня громкости и заканчивая механическими повреждениями смартфона. Чтобы упростить навигацию по данной статье, стоит заранее учесть, если звуки пропали вследствие падения и попросту нарушения физической целостности телефона, достаточно будет ознакомиться с последним способом. Во всех остальных случаях лучше всего ознакомиться с каждым представленным вариантом.
Способ 1: Увеличение уровня громкости
При отсутствии результата, попробуйте воспользоваться ползунком громкости в системных настройках телефона, выставив максимально возможное значение. Этого должно быть вполне достаточно для появления звуков.
Способ 2: Отключение «Тихого» режима
Еще одной причиной пропажи звуков может активация «Тихого» режима, напрямую влияющего на уровень громкости преимущественно системных звуков и будильника. В таком случае, скорее всего, сложностей с воспроизведением музыки не будет, однако уведомления останутся без привычного звукового сопровождения.
-
Проще всего деактивировать «Тихий» режим через панель уведомлений, доступную на любом устройстве вне зависимости от версии ОС, но не всегда предлагающую нужную опцию. У Андроид пятой и выше версии разверните шторку и нажмите по значку «Не беспокоить» на панели быстрого доступа.
Android 5.1+
-
Перейдите в стандартное приложение «Настройки» и в разделе «Устройство» откройте страницу «Звук». Имеющиеся здесь параметры практически полностью повторяют показанное нами ранее.
Android 4.4
-
На телефоне с четвертой версией Андроид настройки звука хоть и отличаются, все же большая часть требуемых действий идентична. Для начала откройте «Настройки» и в блоке «Устройство» выберите пункт «Звук».
Способ 3: Сторонние приложения
Для платформы Android, как известно, было выпущено огромное количество приложений для разных целей. Работа подобного ПО вполне может являться причиной пропажи звуков на устройстве, особенно если в процессе обработки произошли те или иные ошибки. Избавиться от проблемы в таком случае проще всего путем удаления программы, напрямую влияющей на звуки в системе.
Еще одним решением в той же ситуации может стать изменение внутренних параметров приложения, так или иначе связанных с уровнем громкости. То же самое относится к музыкальным и видеоплеерам, звуки которых зависят не только от параметров смартфона, но и от программы.
Способ 4: Использование наушников
При отсутствии положительных результатов от представленных нами способов, вероятно, проблема кроется в динамике устройства. Один из вариантов устранения подобной неполадки заключается в использовании наушников, после подключения которых звуки должны будут вернуться. В том числе можете попробовать Bluetooth-гарнитуру, не зависящую от разъема на корпусе.
Способ 5: Механические неполадки
Наиболее сложный вариант проблемы сводится к механическим неполадкам смартфона, например, вследствие падения или попадания воды в зону с динамиком. Для начала необходимо установить одно из специальных приложений и проверить работу компонентов. В нашем случае будет продемонстрирована программа TestM, но существуют и другие варианты.
-
Скачайте и запустите приложение с официальной страницы в магазине. После этого с помощью панели «Выберите категорию» нажмите по значку с подписью «Звук».
Оптимальным решением в случае обнаружения неполадок является обращение к специалистам для дополнительной диагностики и замены поврежденного компонента. Если у вас есть нужные навыки, можете самостоятельно заменить динамик. При этом без должного опыта лучше не предпринимать подобных действий, иначе наверняка возникнут более серьезные проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Читайте также: