YouTube IFrame Player APIを使って、複数の動画をループ再生する方法を紹介します。
音声はミュート設定で再生されます。

playerVarsプロパティで設定する

playerVarsプロパティでサポートされているplaylistのパラメータを使用します。
https://developers.google.com/youtube/player_parameters?hl=ja

DEMO

読み込みなしで次の動画が再生されます。
右上にYoutube側で作成された再生リスト(Untitled List)のアイコンがあります。

HTML

<div class="player1">
	<div id="player1"></div>
</div>

CSS

動画をレスポンシブ対応させるためのCSSです。

.player1 {
	aspect-ratio: 16 / 9;
	height: auto;
	width: 100%;
}
.player1 iframe {
	border: 0;
	height: 100%;
	width: 100%;
}

JavaScript

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var players = {}; // プレイヤーを管理するためのオブジェクト
var videoIds = ['BzNfY5y7ABw', 'ATTW5zlZL2s'];  // 動画IDの配列
var currentVideo = 0; // 再生中の動画のインデックス

function onYouTubePlayerAPIReady() {
	players['player1'] = new YT.Player('player1', {
		height: '720',
		width: '1280',
		videoId: videoIds[currentVideo],
		playerVars: {
			autoplay: 1, // 自動再生を有効化
			mute: 1, // ミュートを有効化
			loop: 1, // ループ再生
			playlist: videoIds.join(','), // ループする動画のIDを指定
			modestbranding: 1, // YouTube ロゴ非表示
			iv_load_policy: 3, // 動画アノテーションを非表示
			controls: 0, // コントロールバーを非表示
			disablekb: 1, // キーボード操作無効
			rel: 0, // 再生した動画と同じチャンネルから関連動画が選択
			playsinline: 1 // インライン再生
		},
		events: {
			'onStateChange': onPlayerStateChange // 動画の状態が変更されたときに実行
		}
	});
}
function onPlayerStateChange(event) {
	if (event.data == YT.PlayerState.ENDED) { // 動画が終了したとき
		currentVideo = (currentVideo + 1) % videoIds.length; // 次の動画に切り替え、最後まで行くと最初に戻る
		players['player1'].loadVideoById(videoIds[currentVideo]); // 次の動画をロードして再生
	}
}

eventsプロパティで設定する

eventsプロパティのonStateChangeを使用してループ再生させます。

DEMO

次の動画に移動する際に読み込みが発生します。

HTML

<div class="player2">
	<div id="player2"></div>
</div>

CSS

動画をレスポンシブ対応させるためのCSSです。

.player2 {
	aspect-ratio: 16 / 9;
	height: auto;
	width: 100%;
}
.player2 iframe {
	border: 0;
	height: 100%;
	width: 100%;
}

JavaScript

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var players = {}; // プレイヤーを管理するためのオブジェクト
var videoIds = ['BzNfY5y7ABw', 'ATTW5zlZL2s'];  // 動画IDの配列
var currentVideo2 = 0; // 再生中の動画のインデックス

function onYouTubePlayerAPIReady() {

	players['player2'] = new YT.Player('player2', {
		height: '720',
		width: '1280',
		videoId: videoIds[currentVideo2],
		playerVars: {
			autoplay: 1,
			mute: 1,
			modestbranding: 1,
			iv_load_policy: 3,
			controls: 0,
			disablekb: 1,
			rel: 0,
			playsinline: 1
		},
		events: {
			'onStateChange': function(event) {
				if (event.data === YT.PlayerState.ENDED) {
					currentVideo2 = (currentVideo2 + 1) % videoIds.length;
					players['player2'].loadVideoById(videoIds[currentVideo2]);
				}
			}
		}
	});
}