現在、YouTube iFrame API を次の (かなり定型的な) コードでセットアップしています。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.youtube.com/iframe_api"></script>
<script>
var player;
YT.ready(function() {
player = new YT.Player('player', {
videoId: 'iyBaInK2TsI',
width: 200,
height: 200,
events: {
onReady: "onReady",
onStateChange: "onStateChange",
onPlaybackQualityChange: "onPlaybackQualityChange",
onError: "onPlayerError"
},
playerVars: {
fs: 0, // hide fullscreen button by default
playsinline: 1, // make the player not go fullscreen when playing on ios
modestbranding: 1, // hide youtube logo by default - we say 'powered by youtube'
controls: 0, // hide controls by default
showinfo: 0, // hide video title by default
iv_load_policy: 3, // hide annotations by default
rel: 0
}
});
console.log('available quality levels after create = ' + player.getAvailableQualityLevels());
});
// onReady, onStateChange, onPlaybackQualityChange, onPlayerError handlers...
</script>
一長一短は、常に「中」品質でビデオをロードすることです。デスクトップでもモバイルでも、通話setPlaybackQuality('small')
はビデオの品質に影響しません。
setPlaybackQuality('small')
状態が BUFFERING または PLAYING になったときに onReady、onStateChangeを呼び出してみました。また、ビデオの再生中、未再生、または一時停止中に JavaScript コンソールで完全に個別に呼び出してみました。
これは、ユーザーが 3G/4G 接続でプレーヤーをロードしようとしているときに大きな問題を引き起こします。ビデオ ストリーミングの 3G が段階的に廃止されつつあることは理解していますが、かなりの数のユーザーがまだ 3G 接続で操作しており、144p でストリーミングできることで、実際には 3G でビデオを維持できるようになり、240p で 4G (非 LTE) でビデオを維持できるようになります。
品質オプションとして hd720 のビデオを選択すると、setPlaybackQuality('hd720') を呼び出すことができ、正常に動作します。
私の具体的な質問は、私の構成に低品質への切り替えを妨げるものはありますか? また、この制限を回避して再生品質を実際に変更するトリガーとなる特定のコマンドのセットはありますか?