我一直尝试使用 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"
});
请帮忙! 感谢。
答案 0 :(得分:0)
调用setPlaybackQuality函数
后,您可以使用搜索功能重新缓冲视频function onQualityChange(){
player.setPlaybackQuality("small")
player.seekTo(60) // or set to CurrentTime using player.getCurrentTime()
}
如果此代码不起作用,您必须先停止视频,然后设置视频质量,然后寻找您的时间