Публикация и воспроизведение видео на мобильных устройствах¶
Общие правила¶
При публикации или воспроизведении видео на мобильных устройствах, браузер требует действий от пользователя (нажатие кнопки). Кроме того, аудио в элементе HTML5 video должно быть заглушено
Включить аудио при воспроизведении можно также только по нажатию кнопки пользователем.
Таким образом, запуск публикации или воспроизведения потока в мобильном браузере в сборке WebSDK 2.0.212 должен проводиться по следующим правилам:
-
Если Websocket соединение уже установлено, и для запуска публикации или проигрывания используется отдельная кнопка, которую нажимает пользователь (Publish/Play), дополнительных действий в коде приложения не требуется
-
Если по нажатию кнопки пользователем устанавливается Websocket соединение, а затем по событию
SESSION_STATUS.ESTABLISHED
запускается публикация и воспроизведение, то необходимо использовать функциюplayFirstVideo()
при публикации (code)и воспроизведении (code)if (Browser.isSafariWebRTC()) { Flashphoner.playFirstVideo(localVideo, true, PRELOADER_URL).then(function() { publishStream(); }); return; }
Функция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
. -
Если Websocket соединение устанавливается, а затем по событию
SESSION_STATUS.ESTABLISHED
запускается воспроизведение при загрузке страницы (autoplay), необходимо использоватьplayFirstVideo
и отключить автоматическое включение звука при создании потока (code)
Публикация и воспроизведение в режиме 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);
});
}