Плеер YouTube API: Как добраться, продолжительность загрузила/выдала видео, не играя его?

Я не могу добраться, корректная видео продолжительность/длина (в секундах) загрузила/выдала видео через getDuration () метод Плеера YouTube API; тот же метод, однако, возвращает допустимое значение, после того как видео начинает играть! Удивление, как YouTube может показать допустимую продолжительность, загрузило/выдало видео.

Когда я загружаю эту страницу HTML 15 вторыми видеоклипами, я получаю следующий вывод отладки:

заявите = 5 продолжительностей =-0.000025

Когда я поразил кнопку воспроизведения, я получаю следующий вывод отладки:

заявите = 3 продолжительности = 15,

Значительно ценил бы решение или обходное решение. Загрузка, и сразу проигрывание и приостановка плеера были бы не моим любимым методом.

<html>
<head>
  <script type="text/javascript">
   var videoId;
   videoId = 'http://www.youtube.com/v/4TSJhIZmL0A';    // bbc
   // videoId = 'http://www.youtube.com/v/ezwyHNs_W_A'; // physics

    function $(id) {
      return document.getElementById(id);
    }
  </script>

  <script src="http://www.google.com/jsapi"></script>
  <script>
    google.load("swfobject", "2.1");
  </script>

</head>

<body>


  <table>
    <tr><td>
      <div id="player">
        You need Flash player 8+ and JavaScript enabled to view this video.
      </div>

    <script>
        var ytplayer;

        function myOnPlayerStateChange(state) {
          switch(state) {
            case 1:  // playing
              $("out").innerHTML += " playing";
              break;
            case 2:  // paused
              $("out").innerHTML += " paused";
              break;
            case 0:  // ended
              $("out").innerHTML += " ended";
              break;      

            case -1: // unstarted
            case 3:  // buffering
            case 5:  // cued
              $("out").innerHTML += " state = " + state;
              break;
            default: // unknown
              $("out").innerHTML += " state = " + state;
              break;
          }

          $("out").innerHTML += " duration = " + ytplayer.getDuration() + ",";
        }

        function myOnPlayerError(errorCode) {
          $("out").innerHTML += " Error occurred: " + errorCode;
        }

        function onYouTubePlayerReady(playerId) {
          ytplayer = ytplayer || $(playerId);
          ytplayer.addEventListener("onStateChange", "myOnPlayerStateChange");
          ytplayer.addEventListener("onError", "myOnPlayerError");
        }

        var params = { allowScriptAccess: "always", bgcolor: "#cccccc" };
        var atts = { };

        swfobject.embedSWF(videoId + "?border=0&amp;enablejsapi=1&amp;playerapiid=" + 'player', 'player', 425, 344, "8", null, null, params, atts);
    </script>
    </td></tr>
  </table>
  <div id="out"></div>
  <div id="err"></div>
</body>
</html>
14
задан avs099 30 May 2015 в 13:08
поделиться