为什么点击下一个视频功能,使用 YouTube JavaScript 播放器 API,质量下降到默认?

Why onClick next video function, using the YouTube JavaScript Player API, the quality drop down to default?

我在使用 CodeIgniter 时遇到了这个问题,使用 next_video API 函数,点击按钮时新视频的质量比以前的低,所以基本上第一个视频是始终采用我的建议质量,然后始终采用默认质量。

在我的 template 我有这个 div:

 <div id="ytapiplayer">
    You need Flash player 8+ and JavaScript enabled to view this video.
  </div>

这是我的 custom.js:

function loadNewVideo(id, startSeconds,quality,ads) {

    console.log(ytplayer);
  if (ytplayer) {

     $("#current progress-bar").width("0%");   
     if(ads != '')  
     {
        tempVideo   = id;
        id          = ads;
        console.log(ads);
     }
    ytplayer.loadVideoById(id, parseInt(startSeconds),'hd720');

    if(is_mobile)
        {

            $("#videoPlayer").removeClass('active');
            $("#thumbnail").addClass('hidePlayer');                     

        }

  }
  else
  {         
        ytplayer = new YT.Player('ytapiplayer', {
              height: '425',
              width: '356',
              videoId: id,
              suggestedQuality: 'hd720',
              playerVars: {'controls': youtube_control,'autoplay':1 },
              events: {
                'onReady': onYouTubePlayerReady
              }
        }); 

        if(start_youtube =="1")
        {
            $("#videoPlayer").addClass('active');
            $("#thumbnail").removeClass('hidePlayer');          
            $("#amazon").hide();
        }

        if(is_mobile)
        {

            $("#videoPlayer").addClass('active');
            $("#thumbnail").removeClass('hidePlayer');
            $('#thumbnailx ,.info-thumb').popover('show');
            setTimeout(function() {$('#thumbnailx ,.info-thumb').popover('hide');}, 5000);

        }

  }
}

这是我的 header:

    <script src="//www.youtube.com/iframe_api"></script> 

    <script type="text/javascript">
    var base_url              = '<?php echo base_url(); ?>';
    var popup                 = '<?php echo $this->config->item("popup"); ?>';
    var is_mobile             = '<?php echo $this->agent->is_mobile(); ?>';
    var title                 = "<?php echo $this->config->item("title"); ?>"; 
    var label_loading         = "<?php echo ___('label_loading'); ?>";
    var extend                = "<?php echo $this->config->item('use_database'); ?>";
    var start_youtube         = "0";
    var label_loading_playlist= "<?php echo ___('label_loading_playlist'); ?>";
    var error_max             = "<?php echo ___('error_playlist_max'); ?>";
    var hide_ads_registered   = "<?php echo $this->config->item('hide_ads_registered'); ?>";
    var is_logged             = "<?php echo is_logged(); ?>";
    var youtube_control       = "<?php echo $this->config->item('youtube_controls'); ?>";
    var youtube_quality       = "<?php echo $this->config->item('youtube_quality'); ?>";
    </script>

我疯了,因为我找不到问题,我的控制台上没有错误。

我该如何解决?

感谢用户 Alvaro Montoro,我找到了 here 解决方案。

我把这个函数添加到 custom.js:

function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING) {
        event.target.setPlaybackQuality('hd720');  // <-- WORKS!
    }
}

在同一个 JavaScript 我编辑 ytplayer:

ytplayer = new YT.Player('ytapiplayer', {
              height: '100%',
              width: '100%',
              videoId: id,
              suggestedQuality: 'hd720',
              playerVars: {'controls': youtube_control,'autoplay':1 },
              events: {
                'onReady': onYouTubePlayerReady,
                'onStateChange': onPlayerStateChange
              }
        }); 

仅当播放器大小至少为 720 像素时,此方法才有效。

感谢大家