Vladimir Topolev
Vladimir Topolev

Reputation: 394

(YouTube API): YT.Player doesnt work playVideo

I need to develop autoplay when user visit the page, actually apply code snippet as provided in google doc: https://developers.google.com/youtube/iframe_api_reference

<html>
  <body>
    <!-- 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: '360',
          width: '640',
          videoId: 'M7lc1UVf-VE',
          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),
      //    the player should play for six seconds and then stop.
      var done = false;
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          setTimeout(stopVideo, 6000);
          done = true;
        }
      }
      function stopVideo() {
        player.stopVideo();
      }
    </script>
  </body>
</html>

and it doesn't work properly, video doesn't play/ I've tried to put event.target.playVideo(); in setTimeout with delay 1000, 2000, 3000, but this experiment is failed as well - video didn't play Could you help, please?

Upvotes: 0

Views: 734

Answers (1)

Octavia Kitsune
Octavia Kitsune

Reputation: 100

I assume your problem is the autoplay policy most browsers implement. It prevents autoplay in most cases.

One exception is that autoplay works when the video sound is muted. Maybe that is something that works for your use case.

For further reference visit:

https://developer.chrome.com/blog/autoplay/

https://support.mozilla.org/en-US/kb/block-autoplay

https://webkit.org/blog/7734/auto-play-policy-changes-for-macos/

Upvotes: 1

Related Questions