YouTube IFrame API - setPlaybackQuality()不会从当前播放时间更改视频分辨率

时间:2017-08-03 20:27:03

标签: javascript jquery html5 youtube youtube-iframe-api

我一直尝试使用 YouTube IFrame API 更改YouTube中iframe嵌入视频的视频播放质量/分辨率,只需在其中调用player.setPlaybackQuality("hd720")即可播放中间。

据YouTube报道:https://developers.google.com/youtube/iframe_api_reference#setPlaybackQuality

  

“该功能使视频以新质量重新加载到当前位置。”

但是,只有当前播放时间到达缓冲的旧质量流的终点时,视频质量才会发生变化。那么,我怎样才能强制播放器在当时以新分辨率缓冲视频并开始从视频的“当前持续时间”开始显示,就像在YouTube内部一样?

顺便说一句,我在html中使用预定义的iframe标记,其中包含嵌入网址中的所有参数,如下所示:

<iframe id="genesis" src="https://www.youtube.com/embed/EZgTo1kKSsg?enablejsapi=1&controls=0&showinfo=0&iv_load_policy=3&modestbranding=1&rel=0&fs=1" frameborder="0"></iframe>

创建播放器,如下:

$.getScript("https://www.youtube.com/player_api");

function onYouTubeIframeAPIReady() {
player = new YT.Player('genesis', {
    events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange,
        'onPlaybackQualityChange': onQualityChange
    }
});
}

function onQualityChange(){
    console.log('Now playing at ' + player.getPlaybackQuality());
    // Though it returns "hd720" within a few moments after hitting
    // setPlaybackQuality("hd720"), actual playback quality remains the older one.
}

$(document).on('click', '.play', function(){
    player.playVideo();
});

$(document).on('click', '#res_change_while_playing', function(){
    player.setPlaybackQuality($(this).data("id")); // data-id="hd720"
});

请帮忙! 感谢。

1 个答案:

答案 0 :(得分:0)

调用setPlaybackQuality函数

后,您可以使用搜索功能重新缓冲视频
function onQualityChange(){
    player.setPlaybackQuality("small")
    player.seekTo(60) // or set to CurrentTime using player.getCurrentTime()
}

如果此代码不起作用,您必须先停止视频,然后设置视频质量,然后寻找您的时间