Браузер не воспроизводит звук: Пропадает звук в браузере — Google Chrome Community

Содержание

Браузеры отключают звук в вашем WebRTC-приложении. Стоп, что? / Хабр

Технология WebRTC (голосовые и видеозвонки) хороша тем, что встроена прямо в веб, который, разумеется, прекрасно подходит для WebRTC. Однако иногда веб доставляет немало хлопот, когда нужды WebRTC идут вразрез с общими требованиями к использованию браузеров. Последний пример – автовоспроизведение (далее – «автоплей») аудио/видео, когда у многих пользователей внезапно пропадал звук. Бывший автор webrtcHacks –

Dag-Inge Aas

– лично столкнулся с этой проблемой. Ниже его размышления: чего ожидать от браузеров в плане автовоспроизведения, последние изменения в Chrome 66+, а также пару советов, как жить с этими ограничениями.


Браузеры не хотят слышать Зло, поэтому политики автоплея выключают звук в любом медиа. Это может быть проблемой для WebRTC-приложений.

Если вы это читаете, то очень вероятно, что вы сталкивались со странным багом в в браузерах Safari 11+ и Chrome 66+. Речь про звуки интерфейса, которые вдруг стало не слышно (например, сигнал входящего звонка), или про неработающий аудиовизуализатор, или про то как не слышно собеседников.

На данный момент баг затронул почти все популярные WebRTC-плееры. Забавно, но похоже что Meet от Google и Chromebox for meetings тоже затронуты.

Корень всех зол: изменения в политиках автоплея (autoplay policies). В этом посте я расскажу про нововведения, как они касаются WebRTC и как бороться с этим в ваших приложениях.


Ошибка года: Uncaught Error: The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu

Изменения

Все началось в 2007 году, когда появились iPhone и iOS. Если вы в прошлом работали с Safari для iOS, то возможно замечали, что Safari нужно участие пользователя,

чтобы проигрывать элементы <audio> и <video> со звуком

. Позже это требование немного ослабили, когда iOS 10 позволила видеоэлементам проигрываться автоматически, но без звука. Это стало проблемой для WebRTC, т.к. элемент должен «видеть» и «слышать» медиапоток. В контексте WebRTC позволять видео автоматически запускаться без звука – это бесполезно, потому что во время видеозвонка надо по умолчанию слышать собеседников, а не нажимать «play» для этого.

Как бы то ни было, мало WebRTC-разработчиков занимались Safari для iOS, потому что платформа не поддерживала WebRTC

до недавнего времени

. До выхода iOS 11.

Впервые я столкнулся с багом, когда тестировал последнюю (на тот момент) рабочую реализацию видеозвонков для iOS. К моему удивлению, оно перестало работать, при этом я был не одинок. Пользователь Github kylemcdonald зарепортил баг getUserMedia на iOS. Решение? Добавить видеоэлементу новое свойство playsinline, что разрешит видео воспроизводиться со звуком. К сожалению, в оригинальном посте про изменения автоплея в Safari разработчики не упоминали WebRTC, но они все же написали про WebRTC отдельно, до релиза. В статье сказано следующее про

MediaStreams и воспроизведение звука:

  • медиа, использующее MediaStream, будет автоматически воспроизводиться, если веб-страница уже использует камеру/микрофон;
  • медиа, использующее MediaStream, будет автоматически воспроизводиться, если веб-страница уже воспроизводит звук. Чтобы воспроизведение звука началось, все еще нужно участие пользователя.

Итак, в этом документе не упоминается

playsinline

, но если совместить два анонса, то можно понять, как заставить WebRTC-приложение работать в Safari на iOS.

Почему вообще ограничивают автоплей?

Изначально пользователей хотели уберечь от лишних расходов на трафик. В 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, прежде чем выкатываться в продакшн). Кто-нибудь угадает, что будет дальше?


Скриншот из внутренней страницы chrome://media-engagement/ (источник: developers.google.com/web/updates/2017/09/autoplay-policy-changes)

Не только <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 не возьмется за починку, нет другого способа, кроме как вовлекать пользователя.

Нельзя пофиксить звуки интерфейса

На данный момент это невозможно. Кое-кто пробует создавать

AudioContext

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

Как видите, уже существуют способы устранить проблему, пока не появится долгосрочное решение. Да, и не забудьте подписаться на баг, чтобы получать обновления.

Попробуйте эти исправления, если у вас не работает звук в Chrome

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

В этой статье мы предоставим подробные инструкции по устранению проблем со звуком, не работающим в Chrome, для пользователей Chromebook, Mac, Windows и Ubuntu.

Как исправить неработающий звук в Chrome?

Как мы уже упоминали, неработающий звук при просмотре видео в Chrome — довольно распространенная проблема, которая может возникать по разным причинам. Проблема может быть как простой, например, случайное отключение звука динамиков, так и более серьезной, например, повреждением оборудования.

Независимо от того, какая операционная система работает на вашем компьютере, мы начнем с шагов, которые напрямую связаны с браузером. Если это не сработает, выполните действия, описанные ниже для каждой ОС.

  1. Запустите Chrome.
  2. Щелкните три точки (или три горизонтальные линии) в правом верхнем углу браузера.
  3. Перейдите на страницу настроек.
  4. Прокрутите вниз и нажмите «Дополнительно», чтобы отобразить дополнительные параметры.
  5. На вкладке Конфиденциальность и безопасность нажмите Настройки сайта.
  6. Прокрутите вниз до раздела «Звук». Нажмите здесь.
  7. Переключатель на этой странице должен быть включен. Он должен гласить: Разрешить сайтам воспроизводить звук (рекомендуется). Если вы видите Отключить сайты, которые воспроизводят звуковую строку, нажмите кнопку рядом с ним.

Как исправить неработающий звук на Chromebook?

Если общие шаги по устранению проблемы со звуком, не работающей, не помогли, вот некоторые из наиболее распространенных исправлений для пользователей Chromebook:

  1. Убедитесь, что наушники подключены правильно. На многих устройствах должен быть слышен щелчок, когда они вставляются внутрь устройства.
  2. Убедитесь, что параметр Разрешить сайтам воспроизводить звук включен в настройках звука Chrome ( хром: // настройки / контент / звук . )
  3. Убедитесь, что страница не отключена, щелкнув правой кнопкой мыши на ее вкладке. Если он отключен, вы увидите параметр «Включить звук на сайте».
  4. Если через значок динамика в адресной строке вкладки, на которой у вас возникли проблемы со звуком, есть крестик, нажмите на него. Затем нажмите «Всегда разрешать звук на [веб-сайте]» и нажмите «Готово».
  5. Откройте другой браузер и проверьте звук. Это покажет, в Chrome проблема или за ее пределами.
  6. Проверьте, не блокирует ли звук какое-то вредоносное ПО. Перейдите в настройки Chrome, затем «Дополнительно», затем «Очистить компьютер», затем «Найти». Если есть нежелательное программное обеспечение, выберите Удалить.
  7. Используйте последнюю версию Chrome.
  8. Проверьте настройки звука Chromebook. Нажмите на изображение своего профиля в правом нижнем углу экрана, чтобы открыть информационное окно Chromebook. Здесь можно проверить, отключен ли звук. Также проверьте, совпадает ли целевой вывод с выводом, который вы используете в данный момент.
  9. Очистите кеш Chrome и Chromebook.
  10. Сбросьте или отключите все расширения Chrome.
  11. Перезагрузите Chrome.
  12. Перезагрузите компьютер.

Как исправить неработающий звук в Chrome на Mac?

Вот обычное решение проблемы, при которой звук не работает на Mac:

  1. Откройте Системные настройки.
  2. Откройте звук.
  3. Выберите вкладку «Вывод» и перейдите к «Встроенные динамики».
  4. Проверьте, установлен ли ползунок громкости на низкий уровень. Если да, переместите его вправо.
  5. Обязательно снимите флажок «Без звука».

Если это решение не помогло, примените следующие:

  1. Перезапустите вкладку Chrome, не воспроизводя звук.
  2. Если на значке динамика в адресной строке вкладки есть крестик, нажмите на него. Затем нажмите «Всегда разрешать звук на [веб-сайте]» и нажмите «Готово».
  3. Попробуйте воспроизвести звук в другом браузере. Это поможет определить, связана ли проблема с Chrome или чем-то еще.
  4. Убедитесь, что страница не отключена, щелкнув правой кнопкой мыши на ее вкладке. Если звук отключен, появится опция Включить звук на сайте.
  5. Запустите последнюю версию Chrome. Откройте «Настройки», затем «О Chrome» и Chrome автоматически обновится до последней доступной версии (если она еще не установлена).
  6. Отключите все расширения Chrome, начиная с Pepper Flash, если вы его используете.
  7. Удалите все вредоносные программы, которые могут блокировать звук. Откройте «Настройки» в Chrome, выберите «Дополнительно», «Очистить компьютер», затем «Найти». Если обнаружено вредоносное ПО, выберите «Удалить».
  8. Очистите файлы cookie и кеш Chrome.
  9. В Chrome перейдите в «Настройки», «Дополнительно», затем «Сброс», чтобы сбросить настройки Chrome.
  10. Переустановите Chrome.

Как исправить неработающий звук в Chrome в Windows 10?

Если проблема со звуком не работает в Chrome на компьютере под управлением Windows 10, попробуйте следующее:

  1. Запустите панель управления и перейдите в раздел «Звук», затем «Динамики».
  2. Перейдите в Дополнительные параметры динамика и снимите (или установите) флажок рядом с Разрешить приложениям получать монопольный контроль над этим устройством.
  3. Включите звук в Chrome и запустите Volume Mixer. Чтобы запустить Volume Mixer, щелкните правой кнопкой мыши значок динамика в правом нижнем углу экрана.
  4. Включить звук в Chrome.

Если это не помогло, выполните следующие действия:

  1. Воспроизвести звук в другом браузере. Это поможет определить причину проблемы.
  2. Обновите текущую вкладку Chrome, не воспроизводящую звук.
  3. Перезагрузите Chrome.
  4. Убедитесь, что страница не отключена, щелкнув правой кнопкой мыши на ее вкладке. Если звук отключен, вы увидите параметр Включить звук на сайте.
  5. Убедитесь, что установлена ​​последняя версия Chrome. Если доступно обновление, при нажатии на три вертикальные точки в правом верхнем углу экрана появится сообщение «Обновить Chrome».
  6. Очистите файлы cookie и кеш в Chrome. Нажмите на три точки в правом верхнем углу, затем выберите «Дополнительные инструменты», затем «Очистить данные просмотра», затем «Все время», затем «Очистить данные».
  7. Проверьте наличие потенциального вредоносного ПО. Откройте «Настройки» в Chrome, выберите «Дополнительно», «Очистить компьютер», затем «Найти». Если обнаружено вредоносное ПО, выберите «Удалить».
  8. Убедитесь, что Chrome не отключен или его громкость не слишком низкая в микшере громкости.
  9. Перейдите в chrome: // extensions и отключите расширение Pepper Flash, если оно есть.
  10. Переустановите все остальные расширения и проверьте звук после каждого из них.
  11. В Chrome перейдите в «Настройки», «Дополнительно», затем «Сброс». Это сбросит настройки Chrome.
  12. Переустановите Chrome, полностью удалив его с компьютера (через панель управления, затем удалите программу) и установка это снова.

Как исправить неработающий звук в Chrome на Ubuntu?

Если вы не слышите звук в Chrome на Ubuntu, сначала убедитесь, что звук на вашем компьютере не отключен полностью. Проверьте это в системном меню. Если общий звук не отключен, проверьте, отключен ли звук в конкретном приложении (Chrome):

  1. Запустите Обзор действий, введите Звук и щелкните по нему.
  2. Это откроет звуковую панель. Перейдите к уровням громкости и посмотрите, отключен ли звук в Chrome.

Если это не помогает, воспользуйтесь следующими решениями:

  1. Включите звук в другом браузере, чтобы убедиться, что проблема в Chrome.
  2. Снова откройте вкладку, на которой не воспроизводится звук.
  3. Перезапустите Chrome на вашем компьютере.
  4. Убедитесь, что переключатель отключения звука на клавиатуре не включен. Если да, нажмите ее, чтобы включить звук.
  5. Очистите файлы cookie и кеш в Chrome. Нажмите на три точки в правом верхнем углу, затем выберите «Дополнительные инструменты», затем «Очистить данные просмотра», затем «Все время», затем «Очистить данные».
  6. Проверьте наличие потенциального вредоносного ПО. Откройте «Настройки» в Chrome, выберите «Дополнительно», «Очистить компьютер», затем «Найти». Если обнаружено вредоносное ПО, выберите «Удалить».
  7. Перейдите в chrome: // extensions и отключите расширение Pepper Flash, если оно есть. Отключите также одно за другим другие расширения.
  8. Перейдите в Настройки Chrome, Расширенные, затем Сброс, чтобы сбросить настройки Chrome.
  9. Переустановите Chrome.
  10. На компьютере перейдите в «Действия», «Звук», «Вывод» и измените настройки профиля для своего аудиоустройства.

Как исправить звук, который не воспроизводится в Chromecast?

Если при трансляции на Chromecast из браузера звук не воспроизводится, попробуйте следующие решения:

как купить больше рунных страниц
  1. Выберите значок трансляции в браузере Chrome и убедитесь, что звук включен.
  2. Отключите устройство Chromecast от порта HDMI на несколько секунд, не отключая кабель USB.
  3. Выключите телевизор и снова включите его.
  4. Переустановите Chrome на свой компьютер.
  5. Отключите CEC (параметр, позволяющий управлять телевизором с одного пульта дистанционного управления) на телевизоре, а затем перезагрузите его.

Дополнительные ответы на часто задаваемые вопросы

Вот еще вопросы, которые помогут понять и исправить проблемы со звуком, которые не работают в Chrome.

Почему в Chrome не работает звук?

Есть несколько причин, по которым звук может не воспроизводиться в Chrome. Проблема может быть такой же простой, как отключение звука ПК, или более сложной, например, серьезные проблемы с оборудованием. Если звук идет из других браузеров (Edge, Safari и т. Д.), Значит, проблема связана с Chrome.

Как включить звук в Google Chrome?

Если на определенной вкладке Chrome нет звука, скорее всего, проблема довольно проста — эта вкладка может быть отключена. К счастью, включить звук на вкладке Chrome очень просто. Примените эти два простых шага:

1. Щелкните правой кнопкой мыши вкладку, которую хотите включить.

2. В раскрывающемся меню выберите пункт «Включить звук на сайте».

Вкладка Chrome теперь должна быть включена.

Как исправить, что Chrome не отвечает?

Различные проблемы могут привести к тому, что Google Chrome перестанет отвечать. В зависимости от причины решения могут отличаться. Вот что нужно проверить или сделать, чтобы решить эту проблему:

1. Используйте последнюю версию Chrome. Перейдите в Настройки Google Chrome, Справка, затем О Chrome. Если есть более новая версия, Chrome найдет ее и обновит автоматически.

2. Перезагрузите Chrome.

3. Перезагрузите компьютер.

4. Очистите кеш или историю Chrome.

5. Отключите расширения. Если есть недавно добавленное расширение, сначала отключите его.

6. Восстановите настройки Chrome по умолчанию или переустановите приложение.

Почему в моей прямой трансляции нет звука?

Если в вашей прямой трансляции нет звука, попробуйте выполнить следующие действия:

1. Убедитесь, что микшер громкости вашей ОС не отключает браузер или платформу, используемую для прямой трансляции.

2. Зайдите в настройки вещателя и выберите там нужные устройства. В качестве альтернативы можно добавить подходящее устройство в качестве источника.

добавление номеров страниц в документы Google

3. Проверьте дополнительные настройки звука телевещательной компании. Включите правильное аудиоустройство для канала, отправляемого в поток.

4. Попробуйте выполнить потоковую передачу в другой сервис.

Устранение проблем со звуком в Chrome

Отсутствие доступа к звуку в Chrome или любом другом приложении никогда не бывает приятным. К счастью, эту проблему решить относительно несложно. Вот почему мы подробно описали, как исправить или обойти проблемы со звуком для различных операционных систем.

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

Какое решение сработало лучше всего в отношении проблемы со звуком в Chrome? Есть ли другие способы решить эту проблему? Поделитесь своим опытом в разделе комментариев ниже.

нет звука в браузере Chrome в Windows 10 📀