Как я могу воспроизвести два видео Youtube без ссылки на плейлист? - PullRequest
0 голосов
/ 10 февраля 2011

Я очень новичок в Javascript. Я встраиваю iframe YouTube здесь: http://www.heartlandpokertour.com/indexbeta.php

Использование этой документации: http://code.google.com/apis/youtube/iframe_api_reference.html

Я бы хотел, чтобы второе видео воспроизводилось зацикленно после завершения первого. Я не могу установить конкретные параметры видео, если я пытаюсь связать / установить идентификатор видео для плейлиста Youtube.

Я предполагаю, что мне нужно настроить прослушиватель событий и функцию для запуска при трансляции YT.PlayerState.ENDED (или 0), но НЕ ИДЕЯ, как это сделать.

Обновление: вот текущий код, который я использую для плеера:

<script>
  // 2. This code loads the IFrame Player API code asynchronously.
  var tag = document.createElement('script');
  tag.src = "http://www.youtube.com/player_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  // 3. This function creates an <iframe> (and YouTube player)
  //    after the API code downloads.
  var player;
  function onYouTubePlayerAPIReady() {
    player = new YT.Player('player', {
      height: '258',
      width: '406',
      videoId: 'MsTQNZmq5Pk',
      playerVars: { 'autoplay': 0, 'rel': 0, 'showinfo': 0, 'egm': 0, 'showsearch': 0, },
      events: {
        'onStateChange': onPlayerStateChange,
      }
    });
  }

  // 4. The API will call this function when the video player is ready.     
    function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.ENDED) {
        player.stopVideo();
        player.videoId = 'c5dTlLk5_x8';
        player.playVideo();
        }
    }


</script>

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

В первом листинге кода на веб-сайте API это событие может помочь вам:

  function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING && !done) {
      setTimeout(stopVideo, 6000);
      done = true;
    }
  }

Вы можете изменить его на что-то вроде этого (я не боюсь):*

Это было бы наиболее логичным, на мой взгляд, но, опять же, я не уверен, можно ли воспроизводить разные видео в одном экземпляре проигрывателя.Боюсь, я никогда не сталкивался с вашим сценарием.


Редактировать: Вы можете попробовать создать новый экземпляр проигрывателя.Таким образом, вы просто создадите новый плеер, который будет воспроизводить второе видео:

 function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.ENDED) {
      player.stopVideo();

      player = new YT.Player('player', {
         height: '258',
         width: '406',
         videoId: 'some id',
         playerVars: { 'autoplay': 0, 'rel': 0, 'showinfo': 0, 'egm': 0, 'showsearch': 0, },
         events: {
           //'onStateChange': onPlayerStateChange, // not add this line because it would again create a new player after the second has stopped I guess!
         }
      });

      player.playVideo();
    }
  }
1 голос
/ 14 февраля 2012

У меня это работает на моем сайте, сначала вы можете остановить воспроизведение текущего видео, а затем загрузить новое видео с помощью функции loadVideoById () из API YouTube

 function swapVideo() {     
    player.stopVideo();
    player.loadVideoById(youtube_id);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...