YouTube iframe API をセットアップして、低品質の FullHD ビデオを再生しようとしています。私の目標は、モバイル デバイスの帯域幅を節約し、読み込み時間を短縮することです。私の HTML 構造は、従来のプレーヤー div と、メッセージ用のデバッグ div です。
HTML
<div id="debug"></div>
<div id="your_video_id">
<div id="player"></div>
</div>
setPlaybackQuality
モバイル ユーザーがバッファリングで時間を無駄にしないように、プレーヤーの準備が整うとすぐに呼び出すようにしました (この投稿で提案されているように)。また、「BUFFERING」と「PLAYING」の両方の状態で呼び出しました。品質が変化すると、デバッグ コンテンツが実際の再生品質で更新されます。
ジャバスクリプト
/* 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 でテスト済み)。これに対する解決策はありますか?