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

Discussion in 'Web Call Server 5' started by Alex Vorona, May 18, 2018.

  1. Alex Vorona

    Alex Vorona Member

    Здравствуйте.
    В 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 может помочь. Можно надеяться на исправление ?
    KonstantinK likes this.
  2. Max

    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?
  3. Max

    Max Administrator Staff Member

    Добавлен внутренний тикет WCS-1242
  4. Max

    Max Administrator Staff Member

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

Share This Page