为什么onClick下一个视频函数,使用YouTube JavaScript Player API,质量下降到默认?

2024-05-27

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

On my 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 https://stackoverflow.com/questions/8802498/youtube-iframe-api-setplaybackquality-or-suggestedquality-not-working/解决方案。

我将此功能添加到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 像素时,此功能才有效。

感谢大家

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么onClick下一个视频函数,使用YouTube JavaScript Player API,质量下降到默认? 的相关文章

随机推荐