В настоящее время в абсолютном большинстве браузеров при автоматическом запуске воспроизведения звук должен быть заглушен (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();
}
});
stream.play();
Пример обработки нажатия кнопки Unmute
function setStreamVolume(stream, currentVolumeValue) {
if (stream) {
if (stream.isRemoteAudioMuted()) {
stream.unmuteRemoteAudio();
}
stream.setVolume(currentVolumeValue);
}
}