2

我正在使用 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>

但我收到以下错误

回调事件处理程序时出错

是我设置的测试播放器。

4

2 回答 2

2

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



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

<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>
于 2015-05-22T11:29:46.830 回答
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. 
于 2013-12-09T14:09:25.767 回答