Youtube iframe "loop" doesn't work

HtmlIframeYoutube

Html Problem Overview


I tried to use the YouTube player demo to generate the code necessary for my video to autoplay and loop itself. But only the autoplay works, it doesn't loop, and the demo-video doesn't work either. Here is the code I've used.

<iframe class="embed-responsive-item" id="ytplayer" type="text/html" width="640" height="360" src="https://www.youtube.com/embed/M7lc1UVf-VE?&autoplay=1&loop=1&rel=0&showinfo=0&color=white&iv_load_policy=3" frameborder="0" allowfullscreen>
</iframe>

Html Solutions


Solution 1 - Html

Try adding the playlist parameter along with the loop. For playlist, set it's value as the current video id.

<iframe class="embed-responsive-item"id="ytplayer" type="text/html" width="640" height="360" src="https://www.youtube.com/embed/M7lc1UVf-VE?&autoplay=1&loop=1&rel=0&showinfo=0&color=white&iv_load_policy=3&playlist=M7lc1UVf-VE"
      frameborder="0" allowfullscreen></iframe>

Currently, the loop parameter only works in the AS3 player when used in conjunction with the playlist parameter. To loop a single video, set the loop parameter value to 1 and set the playlist parameter value to the same video ID already specified in the Player API URL:

http://www.youtube.com/v/VIDEO_ID?version=3&loop=1&playlist=VIDEO_ID

Reference:https://developers.google.com/youtube/player_parameters#loop

Solution 2 - Html

I just figured out you need to have playlist="" to use loop.

<iframe src="https://www.youtube.com/embed/peSfCy7HFrM?playlist=peSfCy7HFrM&loop=1;rel=0&autoplay=1&controls=0&showinfo=0" frameborder="0" allowfullscreen>

Solution 3 - Html

Using in react native like this, make sure to use same video ID value for playlist as well.

for e.g if video id is SpongeBOB then url will be like this :

https://www.youtube.com/embed/**SpongeBOB**?playlist=**SpongeBOB**&loop=1

below is implementation in react native webview

<WebView
  javaScriptEnabled={true}
  domStorageEnabled={true}
  mediaPlaybackRequiresUserAction={true}
  style={{ height:180, width:300,alignSelf:"center",alignContent:"center"}}
  source={{uri: 'https://www.youtube.com/embed/qD101Xlc5uw?playlist=qD101Xlc5uw&loop=1' }}
 />

Solution 4 - Html

'playlist': '<?php echo $youtube_video ?>'

inside playerVars.

For example a full code:

<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:'100%',
	      width: '100%',
	      fitToBackground: true,  
          videoId: '<?php echo $youtube_video ?>',
          playerVars: { 
	          'autoplay': 1, 
	          'controls': 0,
	          'autohide':1,
	          'enablejsapi':1,
	          'loop':1, 
	          'disablekb':1, 
	          'fs': 0, 
	          'modestbranding': 0, 
	          'showinfo': 0, 
	          'color': 'white', 
	          'theme': 'light', 
	          'rel':0  ,
	          'playlist': '<?php echo $youtube_video ?>'
	      },
          events: {
            'onReady': onPlayerReady
          }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
        player.mute();
		player.setVolume(0);
		//player.setSize(1920, 1080);
		player.setLoop(true);
		player.setPlaybackQuality('hd1080');
      }

Your Html code:

<div id="player"></div>

If you want to keep video in a variable use this:

<?php $youtube_video='C0DPdy98e4c';?>

Solution 5 - Html

Accepted answer didn't work for me either. Working workaround for September 2018 (bonus: set width and height by CSS for #yt-wrap instead of hard-coding it in JS):

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

<script>
  // 2. This code loads the IFrame Player API code asynchronously.
  var tag = document.createElement('script');
  tag.src = "https://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('ytplayer', {
	  width: '100%',
	  height: '100%',
	  videoId: 'VIDEO_ID',
	  events: {
		'onReady': onPlayerReady,
		'onStateChange': onPlayerStateChange
	  }
	});
  }

  // 4. The API will call this function when the video player is ready.
  function onPlayerReady(event) {
	event.target.playVideo();
	player.mute(); // comment out if you don't want the auto played video muted
  }

  // 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.
  function onPlayerStateChange(event) {
	if (event.data == YT.PlayerState.ENDED) {
	  player.seekTo(0);
	  player.playVideo();
	}
  }
  function stopVideo() {
	player.stopVideo();
  }
</script>

Solution 6 - Html

You need to add https://www.youtube.com/embed/VIDEO_ID?playlist=VIDEO_ID&loop=1

note the playlist = VIDEO_ID is mandatory and is set to the video id for a single video

so in my case the url was

https://www.youtube.com/embed/C5tG7pztlb0?playlist=C5tG7pztlb0&loop=1&autoplay=1&controls=1&showinfo=0&mute=1

mute is on show info is off show controls is off autoplay is on loop is on

Solution 7 - Html

Here's another working example of an embedded and looping playlist:

<iframe width="1019" height="573" src="https://www.youtube.com/embed/videoseries?list=PLDz-3V1_TIyhVYiJeGdqc9bjpAf9L9Zfq&amp;loop=1" frameborder="0" allow="accelerometer; autoplay " ;"="" =""="" encrypted-media;="" gyroscope;="" picture-in-picture"="" allowfullscreen=""></iframe>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSeal BlueView Question on Stackoverflow
Solution 1 - HtmlK KView Answer on Stackoverflow
Solution 2 - HtmlLana ĐỗView Answer on Stackoverflow
Solution 3 - HtmlAbhishek GargView Answer on Stackoverflow
Solution 4 - HtmlZakir SajibView Answer on Stackoverflow
Solution 5 - HtmlLuHView Answer on Stackoverflow
Solution 6 - HtmlJamieView Answer on Stackoverflow
Solution 7 - HtmlSteve CottrellView Answer on Stackoverflow