Как предотвратить несколько экземпляров проигрывателя, ошибки воспроизведения с помощью Vimeo Javascript Player API - PullRequest
0 голосов
/ 30 сентября 2019

Мы перебираем видео с помощью кода, чтобы перейти к новому видео. Однако может показаться, что плеер запутался и отображает данные, связанные с несколькими видео. Например, в полноэкранном режиме может отображаться последний экран-заставка, когда воспроизводится другое видео.

Я попытался выгрузить последнее видео перед загрузкой нового. Но это все еще запутывается. Я полагаю, что, по-видимому, одновременно воспроизводится несколько видео, хотя существует только один экземпляр проигрывателя.

//unload the last video
thisPopupVideoPlayer.Player.unload().then(function(){
//load in the new video
 thisPopupVideoPlayer.Player.loadVideo(VPAVideoReview.vimeo_url).then(function(){
//play the video
thisPopupVideoPlayer.Player.Play();
});

});

Возможная проблема заключается в том, что проигрыватель хранится в экземпляре объекта, т. Е. {Player: [vimeoplayer]}. Если игрок поврежден или не играет, мы меняем игрока на новый экземпляр, уничтожая последний vimeoplayer, а затем повторно удаляя его. Код ниже:

PopupVideoPlayer.prototype.InitPlayer = function(funct, url){

                    var thisPopupVideoPlayer = this;



                    if(thisPopupVideoPlayer.Player !== null){

                       thisPopupVideoPlayer.Player.destroy().then(function() {
                           thisPopupVideoPlayer.BuildPlayer(funct, url);
                        });

                    } else {
                        thisPopupVideoPlayer.BuildPlayer(funct, url);
                    }



                }

                    PopupVideoPlayer.prototype.BuildPlayer = function(funct, url){



                        var thisPopupVideoPlayer = this;

                        if(typeof url === 'undefined'){
                            url = thisPopupVideoPlayer.VPAVideoReview.vimeo_url;
                        }

                    //try to reload the player from scratch
                    jQuery('#popup-video-player-video-area').html('<iframe width="300" height="200" id="vpa-popup-video-player-vimeo-player" src="'+url+'" frameborder="0" allowfullscreen="" allow="autoplay; encrypted-media; fullscreen" ></iframe>');
                    thisPopupVideoPlayer.VideoIframe = jQuery('#vpa-popup-video-player-vimeo-player').get(0);

                    thisPopupVideoPlayer.Player = new Vimeo.Player(thisPopupVideoPlayer.VideoIframe);

                    thisPopupVideoPlayer.AddEvents();



                    if(typeof funct === 'function'){
                        funct.call();
                    }

                    }

Мне интересно, вызывают ли ошибки какие-либо из наших функций впрыска или выгрузки. Мы также используем много интервалов и тайм-аутов по всему коду. Возможно, один из них вызывает асинхронное создание плеера.

Существует множество возможных проблем, связанных с характером игрока (то есть его архитектурой then (), моим использованием интервалов и т. Д.) Мне интересно, что запускает и останавливает игру в разных местах.

Полагаю, я не прошу вас решить эту проблему, а дам несколько советов о том, как лучше всего использовать Vimeo Javascript Player, чтобы я мог избавиться от плохих практик в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...