o01*_*o01 22 javascript youtube api iframe
我通过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();
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,我的呼吁player.setPlaybackQuality
或event.target.setPlaybackQuality
没有给出任何错误.它看起来好像玩家忽略了它.例如,对player.setSuggestedQuality
(不存在的函数)的调用会按预期引发错误.
我已经尝试了API参考中所述的所有有效字符串参数('medium','large','hd720'等).他们都没有工作.
任何人对我应该如何设置这个属性有任何建议?
小智 28
我有完全相同的问题和解决方法.我认为正在发生的事情是YouTube只允许基于显示器实际尺寸的质量级别,所以除非你的视频是720px高,否则在实际播放之前你不能默认为720p.然后用户控制开始,YouTube停止成为一个鸡巴.
编辑
刚刚取得突破:如果您使用事件3(缓冲)而不是事件5(播放),那么用户就没有口吃.质量一旦开始加载就会改变.只有奇怪的是你需要在onPlayerReady中设置它,否则它不起作用.
function onPlayerReady(event) {
event.target.setPlaybackQuality('hd720');
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.BUFFERING) {
event.target.setPlaybackQuality('hd720');
}
}
Run Code Online (Sandbox Code Playgroud)
找到了可能的黑客/解决方案.
如果我等到视频开始播放,那么申请setPlaybackQuality
- 它有效.正是如此:
player = new YT.Player('player', {
height: '490',
width: '725',
videoId: yturl,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
function onPlayerReady(event) {
player.setVolume(100);
event.target.playVideo();
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
event.target.setPlaybackQuality('hd720'); // <-- WORKS!
}
}
Run Code Online (Sandbox Code Playgroud)
然而,解决方案并不理想,因为视频首先开始以较低质量缓冲 - 然后在开始播放时切换到720.任何意见或替代解决方案将不胜感激.
归档时间: |
|
查看次数: |
23317 次 |
最近记录: |