API Youtube - getAvailableQualityLevels возвращает пустой массив

Я получаю пустой массив, когда я вызываю функцию youtube getAvailableQualityLevels(), но почему?
Видео имеет множество уровней качества, таких как 360p 480p... 720p

DEMO: http://jsbin.com/eyexah/1/edit

YT API Doc https://developers.google.com/youtube/js_api_reference#GettingReference

CODE:

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<script type="text/javascript" language="javascript">
      var params = { allowScriptAccess: "always" };
      var atts = { id: "youtube_player" };
      swfobject.embedSWF('http://www.youtube.com/v/ZGx2WUbhnyM?enablejsapi=1&playerapiid=ytplayer&version=3',
                         'youtube',
                         '425',
                         '356',
                         '8',
                         null,
                         null,
                         params,
                         atts);

</script>
<script type="text/javascript" language="javascript">
function onYouTubePlayerReady()
{
    console.log('# onYouTubePlayerReady');
    var ytp = document.getElementById("youtube_player");
    var getQuali = ytp.getAvailableQualityLevels();
    console.log(getQuali);
};
</script>
</head>

<body>       
  <div id="youtube"></div>
</body>
</html>

Ответ 1

Это будет работать, если состояние будет playing (или 1).

добавить слушателя для событий onStateChange в вашей функции onYouTubePlayerReady:

ytp.addEventListener('onStateChange', 'onPlayerStateChange');

и добавьте функцию onPlayerStateChange, например:

function onPlayerStateChange(event)
{
   var getQuali = ytp.getAvailableQualityLevels();
}

См. рабочий пример на основе вашего кода: http://jsbin.com/eyexah/6/edit

Ответ 2

Вы можете получить, когда состояние "играет".
Проверьте onPlayerStateChange (событие)