我在通过 Youtube iFrame API 设置视频的质量设置时遇到一些问题。这是我的代码:
var player;
player = new YT.Player('player', {
height: '490',
width: '725',
videoId: yturl,
/* setPlaybackQuality: 'hd720', <-- DOES NOT WORK */
/* suggestedQuality: 'hd720', <-- DOES NOT WORK */
events: {
'onReady': onPlayerReady
}
});
function onPlayerReady(event) {
player.setPlaybackQuality('hd720'); // <-- DOES NOT WORK
event.target.setPlaybackQuality('hd720'); // <-- DOES NOT WORK
player.setVolume(100); // <-- DOES WORK
console.log(player.getPlaybackQuality()); // <-- Prints 'small' to console
event.target.playVideo();
}
有趣的是我打电话给player.setPlaybackQuality
or event.target.setPlaybackQuality
没有给出任何错误。看起来好像玩家忽略了它。打电话给,比如说,player.setSuggestedQuality
(不存在的函数)按预期抛出错误。
我已经尝试了所有有效的字符串参数API 参考中概述 http://code.google.com/apis/youtube/iframe_api_reference.html#Events(“中”、“大”、“hd720”等)。它们都不起作用。
有人对我应该如何设置这个属性有什么建议吗?
我有完全相同的问题和解决方法。
我认为发生的情况是 YouTube 只允许基于显示器实际尺寸的质量级别,因此除非您的视频高度为 720 像素,否则在实际播放之前不能默认为 720p。然后用户控件就会启动,YouTube 就不再是个混蛋了。
EDIT
刚刚取得突破:
如果您使用事件 3(缓冲)而不是事件 5(播放),则用户不会出现卡顿现象。一旦开始加载,质量就会改变。唯一奇怪的是你还需要在 onPlayerReady 中设置它,否则它不起作用。
function onPlayerReady(event) {
event.target.setPlaybackQuality('hd720');
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.BUFFERING) {
event.target.setPlaybackQuality('hd720');
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)