Проблема в том, что YouTube выбирает наиболее подходящее качество воспроизведения, поэтому он переопределяет setPlaybackQuality()
в функции onPlayerReady()
.
Я нашел решение, которое заставит проигрыватель YouTube играть в любом качестве, которое вы не хотитенезависимо от ширины и высоты плеера:
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '180',
width: '320',
videoId: 'M7lc1UVf-VE',
events: {
'onReady': onPlayerReady,
'onPlaybackQualityChange': onPlayerPlaybackQualityChange,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerPlaybackQualityChange(event) {
var playbackQuality = event.target.getPlaybackQuality();
var suggestedQuality = 'hd720';
console.log("Quality changed to: " + playbackQuality );
if( playbackQuality !== 'hd720') {
console.log("Setting quality to " + suggestedQuality );
event.target.setPlaybackQuality( suggestedQuality );
}
}
Код обеспечивает изменение качества.
Имейте в виду: пользователь не может изменить качество видео с помощью кнопки проигрывателя с этим кодом.
В любом случае, вы можете принудительно установить предлагаемое качество только один раз.
Протестировано в GChrome, Firefox и Safari.