Skip to end of metadata
Go to start of metadata

Общие правила

При публикации или воспроизведении видео на мобильных устройствах, браузер требует действий от пользователя (нажатие кнопки). Кроме того, аудио в элементе HTML5 video должно быть заглушено

    let video = document.createElement('video');
    video.muted = true;

Включить аудио при воспроизведении можно также только по нажатию кнопки пользователем.

Таким образом, запуск публикации или воспроизведения потока в мобильном браузере в сборке WebSDK 2.0.212 должен проводиться по следующим правилам:

1. Если Websocket соединение уже установлено, и для запуска публикации или проигрывания используется отдельная кнопка, которую нажимает пользователь (Publish/Play), дополнительных действий в коде приложения не требуется

2. Если по нажатию кнопки пользователем устанавливается Websocket соединение, а затем по событию SESSION_STATUS.ESTABLISHED запускается публикация и воспроизведение, то необходимо использовать функцию playFirstVideo()  при публикации

code

        if (Browser.isSafariWebRTC()) {
            Flashphoner.playFirstVideo(localVideo, true, PRELOADER_URL).then(function() {
                publishStream();
            });
            return;
        }

и воспроизведении

code

        if (Flashphoner.getMediaProviders()[0] === "WSPlayer") {
            ...
        } else if (Browser.isSafariWebRTC() || Flashphoner.getMediaProviders()[0] === "MSE") {
            Flashphoner.playFirstVideo(remoteVideo, false, PRELOADER_URL).then(function () {
                playStream();
            });
            return;
        }

Функция playFirstVideo  возвращает Promise, который разрешается, если в указанном видеоэлементе на странице удалось успешно проиграть тестовый фрагмент видео, путь к которому указан константой PRELOADER_URL .

3. Если Websocket соединение устанавливается, а затем по событию SESSION_STATUS.ESTABLISHED запускается воспроизведение при загрузке страницы (autoplay), необходимо использовать playFirstVideo  и отключить автоматическое включение звука при создании потока

code

    var options = {
        name: streamName,
        display: remoteVideo,
        flashShowFullScreenButton: true
    };
    ...
    if (autoplay) {
        options.unmutePlayOnStart = false;
    }
    stream = session.createStream(options).on(STREAM_STATUS.PENDING, function (stream) {
        ...
    });
    stream.play();

Публикация и воспроизведение в режиме Low Power Mode

В режиме Low Power Mode на iOS устройствах для публикации или воспроизведения обязательно требуется действие пользователя. Автозапуск воспроизведения в этом режиме не работает. Для того, чтобы определить этот режим, используется функция playFirstVideo : в Low Power Mode Promise, который возвращает эта функция, будет отклонен

code

                if (Browser.isSafariWebRTC()) {
                    Flashphoner.playFirstVideo(pDisplay, false, PRELOADER_URL).then(function() {
                        playStream(participant, pDisplay);
                    }).catch(function (error) {
                        // Low Power Mode detected, user action is needed to start playback in this mode
                        console.log("Can't atomatically play participant" + participant.name() + " stream, use Play button");
                        onParticipantStopped(participant);
                    });
                }
  • No labels