Перейти к содержанию

Публикация и воспроизведение видео на мобильных устройствах

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

При публикации или воспроизведении видео на мобильных устройствах, браузер требует действий от пользователя (нажатие кнопки). Кроме того, аудио в элементе 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);
    });
}