为什么videojs不是一直在播放,它只在第一次播放

Why videojs is not playing all the time, it plays for the first time only

我正在使用从 4.* 升级而来的 videojs 最新插件 7.6.54.* 工作正常)。

模拟了我的项目videojs

我想通过更改 html 内容在同一对话框中显示图像或视频

问题:videojs播放器不是每次加载或播放(只有第一次播放),如何让它一直播放。

重现我的问题的步骤:

  1. 请参阅下面的代码片段或转到此代码笔 link https://codepen.io/eabangalore/pen/PoPwQjZ

  2. 等待 30 秒,videojs 将在对话框中第一次正确出现。

3.dialog 会消失,图像会出现。

  1. 再等 30 秒,现在 videojs 将不会加载。

下面是我的代码:

function initializePlayer(){
          var player = videojs('vplayer', {inactivityTimeout: 0});
                  player.ready(function() {
                    player.src({
                      src: "https://vjs.zencdn.net/v/oceans.webm",
                      type: "video/webm"
                   });
                 });
}

var showCloseNum = 0;
var intId = setInterval(function(){
           showCloseNum++;
           $('#videojs_player_dialog').dialog({
            modal: true,
            resizable: false,
            autoOpen: false,
             width: 600,
             height: 350,
            open: function(){
                 var player = `
        <video  disablepictureinpicture="" autoplay controlslist="nodownload"  id="vplayer" class="video-js vjs-default-skin"  controls muted data-setup='{ "inactivityTimeout": 0}' style="width:600;height:350;">
                <source src="#"></source>
            </video>
                `;
              
              var image = '<img src="https://via.placeholder.com/468x60?text=Visit+Blogging.com+NoC/O https://placeholder.com/">';
              
              if(showCloseNum % 2 == 0){
                              $('#videojs_player_dialog').html(player);
initializePlayer();
              }else{
                $('#videojs_player_dialog').html(image);
              }
            
                
             },
             beforeClose: function () {
                 $('#videojs_player_dialog').html('');
                 $(this).dialog('destroy');
              }
         });
    if(showCloseNum % 2 == 0){
       $('#videojs_player_dialog').dialog('open');
        
    }else{
      $('#videojs_player_dialog').dialog('close');
    }
},6000);
video{
  width: 100%;
  height:100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.6.5/video.min.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<link href="https://vjs.zencdn.net/7.5.5/video-js.css" rel="stylesheet"/>





<div id="videojs_player_dialog">

</div>

你需要处理播放器而不是仅仅删除它的元素,否则你无法初始化具有相同 ID 的其他播放器。

videojs.getPlayer('vplayer').dispose()