Как обрабатывать видео-события YouTube (начало, конец и т. Д.) В iOS uiwebview - PullRequest
19 голосов
/ 11 мая 2011

В настоящее время я использую новый интерфейс iframe для встраивания видео YouTube в uiwebview на iPad, и я могу автоматически воспроизводить его без участия пользователя. В API iframe описано, как использовать событие onstatechange, но в моем приложении оно не работает, и, к сожалению, я не вижу никакой отладки в uiwebview.

Я просто хочу иметь возможность определять, когда видео заканчивается, у вас есть какие-либо советы по этому поводу? Кто-нибудь заставил его работать?

Ответы [ 5 ]

15 голосов
/ 20 ноября 2011

Вы пытались (из документации) назначить целое число событию окончания фильма ?:

onStateChange Это событие возникает при каждом изменении состояния игрока.Свойство data объекта события, которое API передает функции прослушивания событий, задает целое число, соответствующее новому состоянию игрока.Возможные значения данных:

-1 (unstarted)
0 (ended)
1 (playing)
2 (paused)
3 (buffering)
5 (video cued).

Когда проигрыватель впервые загружает видео, он будет транслировать событие без запуска (-1).Когда видео настроено и готово к воспроизведению, проигрыватель будет транслировать событие видео (5).В своем коде вы можете указать целочисленные значения или использовать одну из следующих переменных пространства имен:

YT.PlayerState.ENDED
YT.PlayerState.PLAYING
YT.PlayerState.PAUSED
YT.PlayerState.BUFFERING
YT.PlayerState.CUED

Итак, что-то вроде:

if(event.data==YT.PlayerState.ENDED){ 
//do stuff here
                }
1 голос
/ 21 ноября 2011

Пусть это http://code.google.com/apis/youtube/js_api_reference.html#SubscribingEvents может помочь вам

0 голосов
/ 11 февраля 2019

Это может быть связано с autoplay-policy в вашем браузере (по умолчанию оно отключено в мобильных браузерах).

Если ваш браузер chrome, вы можете запустить его с дополнительным флагом командной строки --autoplay-policy=no-user-gesture-required - он работает дляя.

0 голосов
/ 20 августа 2018

Чтобы определить, когда видео заканчивается, видео имеет состояние 0 или YT.PlayerState.ENDED

Вот ссылка на jsfiddle ссылка !

<!DOCTYPE html>
<html>

  <head>
    <meta charset="UTF-8">
    <title>Page 1</title>
  </head>

  <body>

    <h1>Video page</h1>
    <br>


    <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
    <div id="player"></div>

    <script>
      // 2. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_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 onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: 'ussCHoQttyQ',
          playerVars: {
            'autoplay': 0,
            'controls': 0,
            'showinfo': 0,
            'rel': 0
          },
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
      }

      // 5. The API calls this function when the player's state changes.
      // The function indicates that when playing a video (state=1),
      // -1 unstarted 
      // 0 ended 
      // 1 playing
      // 2 paused
      // 3 buffering
      // 5 video cued
      var done = false;

      function onPlayerStateChange(event) {
        console.log(event);
        if (event.data == YT.PlayerState.ENDED) {
          alert(1);
        }
      }

    </script>




  </body>

</html>
0 голосов
/ 30 октября 2013

для этого вам нужно использовать JavaScript.

Ссылка по ссылке: https://developers.google.com/youtube/js_api_reference

...