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,以避免移动用户在缓冲中浪费时间(如本文所示(。我还在"缓冲"和"播放"状态下调用了它。当质量更改时,调试内容将更新为实际播放质量。

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, 0, desiredQuality)。在测试时,这在Android和iOS上都得到了尊重,在Android和Desktop上以正确的质量调用onPlaybackQualityChanged一次,在iOS上调用两次,从未将质量更改为更高或更低的质量。

不幸的是,如果您传递了视频中不可用的任何质量,它将强制使用"中等"。请注意这一点。此外,这不太可能打破 API 在 iOS 上所做的任何质量上限,以防止 3G/4G/LTE 网络上的外来数据使用。

现在是

2020 年,YouTube 已弃用 setPlaybackQuality 函数。

目前无法强制提高嵌入视频的播放质量。即使将播放器设置为 144px 宽度似乎也不再有效。

相关内容

  • 没有找到相关文章

最新更新