Обработка video.play() в flashphoner.js

Здравствуйте.
В wcs_api-2.0/src/webrtc-media-provider.js#L95 и wcs_api-2.0/src/webrtc-media-provider.js#L786 используется .play() для тега video без каких-либо дополнительных обработок. Это приводит как минимум в Safari к ошибкам вида
Code:
Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission. 
(anonymous function)
 rejectPromise
 play
 onloadedmetadata — flashphoner.min-b918f5a955c6c6d41a619f66b5bcbc14.js:1:835062
Я так понимаю, предлагаемое Chrome'ом решение https://goo.gl/LdLk22 с использованием и обработкой Promise может помочь. Можно надеяться на исправление ?
 

Max

Administrator
Staff member
В Safari метод play() вызывается два раза: первый раз чтобы проиграть черный экран, второй раз чтобы проиграть видео по WebRTC.
Скорее всего из-за этого второй вызов наезжает в некоторых ситуациях на первый, в случае если первый вызов еще не успел завершиться.
Вероятное решение - обработка первого вызова через Promise.
Code:
var playFirstVideo = function (display, isLocal, src) {
    if (!getCacheInstance(display)) {
        var video = document.createElement('video');
        video.setAttribute("playsinline", "");
        video.setAttribute("webkit-playsinline", "");
        display.appendChild(video);
        video.id = uuid_v1() + (isLocal ? LOCAL_CACHED_VIDEO : REMOTE_CACHED_VIDEO);
        if (src) {
            video.src = src;
        } else {
            video.src = "../../dependencies/media/preloader.mp4";
        }
        video.play();
    }
};
Проверим, отпишем что получилось.
Есть ли стабильное воспроизведение для этого бага в Safari?
 

Max

Administrator
Staff member
Добрый день. Протестировали с iOS 11.3.1 и последним Safari, проблема не воспроизводится.
Уточните, пожалуйста, версию iOS и Safari, версию WCS API. Меняли ли вы сэмпл, который поставляется по-умолчанию с WebSDK (
dependencies/media/preloader.mp4) ? Если так, то просьба предоставить его на тестирование.
 
Top