gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:06:02 27 4
gpt4 key购买 nike

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

HTML

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

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

我尝试在播放器准备好后立即调用 setPlaybackQuality ,以避免移动用户在缓冲中浪费时间(如 post 中的建议)。我还在“缓冲”和“播放”状态下调用了它。当质量发生变化时,调试内容会根据实际播放质量进行更新。

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,而是调用 loadVideoById(videoId, 0,desiredQuality)onReady 处理程序中。测试时,这在 Android 和 iOS 上都得到了尊重,在 Android 和桌面上以正确的质量调用 onPlaybackQualityChanged 一次,在 iOS 上调用两次,永远不会将质量更改为更高或更低。

不幸的是,如果您通过了视频中不可用的任何质量,它将强制“中等”。请注意这一点。此外,这不太可能打破 API 在 iOS 上执行的任何质量上限,以防止 3G/4G/LTE 网络上的无关数据使用。

关于iframe - Youtube iFrame API setPlaybackQuality 在移动设备上被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27562150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com