设置jw播放器youtube视频播放质量

时间:2013-12-08 13:43:01

标签: javascript youtube youtube-api jwplayer jwplayer6

我正在使用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是我设置的测试播放器。

2 个答案:

答案 0 :(得分:2)

我的解决方案是原生的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>

答案 1 :(得分:1)

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.