В настоящее время в абсолютном большинстве браузеров при автоматическом запуске воспроизведения звук должен быть заглушен (mute). Для включения звука требуется действие пользователя: нажатие на кнопку в браузере, перемещение ползунка регулировки громкости и т.п. На стороне клиентского кода при этом необходимо каким-то образом узнать состояние видео элемента, в котором браузер проигрывает видео: заглушено аудио или нет.
В связи с этим, в сборке WebSDK 2.0.241 добавлен тип события потока STREAM_EVENT_TYPE.UNMUTE_REQUIRED
. При получении такого события можно отобразить кнопку включения звука, которую пользователь должен нажать, например
stream = session.createStream(options).on(STREAM_STATUS.PENDING, function (stream) { ... }).on(STREAM_EVENT, function(streamEvent){ if (STREAM_EVENT_TYPE.NOT_ENOUGH_BANDWIDTH === streamEvent.type) { ... } else if (STREAM_EVENT_TYPE.RESIZE === streamEvent.type) { ... } else if (STREAM_EVENT_TYPE.UNMUTE_REQUIRED === streamEvent.type) { console.log("Stream is muted by autoplay policy, user action required to unmute"); $("#unmute").show(); } });
Пример обработки нажатия кнопки Unmute
function setStreamVolume(stream, currentVolumeValue) { if (stream) { if (stream.isRemoteAudioMuted()) { stream.unmuteRemoteAudio(); } stream.setVolume(currentVolumeValue); } }