Youtube iFrame API setPlaybackQuality在移动设备上被忽略

我正在尝试设置YouTube iframe API以较低质量播放FullHD视频.我的目标是在移动设备上节省带宽,并减少加载时间.我的 HTML结构是经典的播放器div,加上一个用于消息的调试div.

HTML

<div id="debug"></div>

<div id="your_video_id">
  <div id="player"></div>
</div>

一旦播放器准备就绪,我已经尝试调用setPlaybackQuality,以避免移动用户浪费时间缓冲(如post所示).我也在“BUFFERING”和“PLAYING”状态中调用它.当质量变化时,调试内容将以实际播放质量进行更新.

JAVASCRIPT

/* Trigger player ready */
function onPlayerReady(event) 
{
    player.setPlaybackQuality("small");
}

/* Detect playback quality changes */
function onQualityChange(event) 
{
    document.getElementById("debug").innerHTML = event.data;
}

/* Trigger player events */
function onPlayerStateChange(event) 
{
    if (event.data == YT.PlayerState.BUFFERING) 
    {
        player.setPlaybackQuality("small");
    }

    if (event.data == YT.PlayerState.PLAYING) 
    {
        player.setPlaybackQuality("small");
    }
}

代码似乎在桌面上工作(调试正确设置为“小”),但在移动设备上被忽略(调试设置为“大”,使用Android 4.2.2进行测试).是否有解决方案?

解决方法

我发现的解决方法是创建没有videoId的播放器,不要在其他地方调用setPlaybackQuality,而是在onReady处理程序中调用loadVideoById(videoId,desiredQuality).这在Android和iOS上都受到尊重,经过测试,在Android和桌面上以正确的品质调用了一次正确的质量,在iOS上调用了两次,从不将质量改变为更高或更低的质量.

不幸的是,如果您传递视频中不可用的任何质量,它将强制“中”.注意到这一点.此外,这不可能破坏API在iOS上的任何质量上限,以防止3G / 4G / LTE网络上的无关数据使用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


html5中section的用法
span标签和p标签的区别
jsp文件和html文件的区别是什么
span标签和div的区别
html颜色代码表大全
span标签的作用是什么
dhtml的主要组成部分包括什么
html编辑器哪个软件好用
span标签属于什么样式标签
html文件乱码怎么办
html怎么读取json文件
html文件打开乱码怎么恢复原状
html怎么链接外部css
html文件怎么保存到本地
html怎么链接css文件
html和css怎么连接
html和css怎么关联
html文件怎么保存到一个站点
html文件怎么写
html出现乱码怎么解决