【问题标题】:Set jw player youtube video playback quality设置 jw player youtube 视频播放质量
【发布时间】:2013-12-25 14:04:27
【问题描述】:

我正在使用 jw 播放器播放 youtube 视频,但我需要视频以高清 (720p) 开始播放,我使用以下代码:

<div id="player">
<script>
 jwplayer("player").setup({
        file: "http://www.youtube.com/watch?v=o8UCI7r1Aqw",
        height: "720",
        width: "1280"
    });
</script>
</div>
<script>
jwplayer('player').onPlay(function() {
jwplayer().setPlaybackQuality('hd720');
});
</script>

但我收到以下错误

回调事件处理程序时出错

Here是我设置的测试播放器。

【问题讨论】:

    标签: javascript youtube youtube-api jwplayer jwplayer6


    【解决方案1】:

    我的解决方案是原生 youtube API。 (来自https://developers.google.com/youtube/iframe_api_reference#setPlaybackQuality)



    见Demo!
    (但它有一个错误:您可以切换到较高的质量,但它不会转到较低的质量......)

    <div id="MyPlayerDivIDD1"></div>    <div id="MyQualities"></div>
    
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript" src="http://www.youtube.com/player_api"></script>
    <script type="text/javascript">
    function onYouTubePlayerAPIReady() {
        ytp1 = new YT.Player('MyPlayerDivIDD1', {   height: '200',  width: '290', videoId: 'Rk6_hdRtJOE',           playerVars: { 'autoplay': 1, 'controls': 1 , 'autohide':0,},                    events: {'onReady': onPlayerReady,  'onStateChange': onPlayerStateChange }                         });
        var startedd=false; var MyQuality; 
    }  
    function onPlayerReady(event) {}
    function onPlayerStateChange(event) {   if (event.data == YT.PlayerState.PLAYING && !startedd) { SetQuallll(event);startedd=true; }  }
    function SetQuallll(event) {    MyQuality = MyQuality || 'tiny';    event.target.setPlaybackQuality(MyQuality);  }  
    </script>
    
    
    
    <br/> <a href="javascript:ShowMenu();">SHOW QUALITY Switcher </a>
    <script>
    function ShowMenu(){
        AllQualities = ytp1.getAvailableQualityLevels(); AllQualities.push("hd720"); AllQualities.push("hd1080");
        for (var i=1; i<AllQualities.length; i++) {  document.getElementById("MyQualities").innerHTML += ' <a href="javascript:  startedd=false;  MyQuality=\''+AllQualities[i]+'\'; alert(\'Current Qualityy:\'+ytp1.getPlaybackQuality() + \' ---------  Switching To:'+AllQualities[i]+'\');  ytp1.pauseVideo(); ytp1.setPlaybackQuality(\''+AllQualities[i]+'\');  ytp1.playVideo();  void(0); ">'+i + ')' + AllQualities[i]+'</a>  '; }
    }</script>
    

    【讨论】:

      【解决方案2】:

      setPlaybackQuality 不是有效的 API 调用 - http://www.longtailvideo.com/support/jw-player/28851/javascript-api-reference

      以下是有效质量 API 调用的列表:

      Quality
      
      These API calls are used to listen to or update the video quality if multiple quality levels of a video are provided.
      
      getQualityLevels()
          Returns an array with quality levels from the player. Each level is an object that contains a label property. 
      getCurrentQuality()
          Returns the index of the currently active quality level. 
      
      setCurrentQuality(index)
          Change the quality level to the provided index. The index must be within the list provided by getQualityLevels. 
      
      onQualityLevels(callback)
          Fired when the list of available quality levels is updated. Happens e.g. shortly after a playlist item starts playing. Event attributes:
      
              levels (Array): the full array with new quality levels. 
      
      onQualityChange (callback)
          Fired when the active quality level is changed. Happens in respons to e.g. a user clicking the controlbar quality menu or a script calling setCurrentQuality. Event attributes:
      
              currentQuality (Number): index of the new quality level in the getQualityLevels() array. 
      

      【讨论】:

      • 感谢@ethan 的回复,但据我了解,这些 api 调用仅在我列出可用质量级别的情况下,而不是在我使用 youtube 时,至少我尝试了 setCurrentQuality('720')但它没有工作
      • 它应该与 YouTube 以及本地质量列表一起使用。我可以看看哪里不工作吗?
      • 就用这个 - jwplayer().setCurrentQuality(2);
      猜你喜欢
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      相关资源
      最近更新 更多