YouTube再生中にボリュームを変更して、別ページに遷移して別のYouTubeを再生すると、変更したボリュームの値が引き継がれているかと思います。
APIからボリュームを変更した場合も同様に引き継がれると思っていたのですが、違うようだったので実験してみました。
サンプルコード
以下の流れで実験を行ってみます。
- YouTubeを再生して、ボリュームを適当に変更してから次のページへ
- YouTubeを再生すると、JavaScriptで自動でミュートにされるので、そのまま次のページへ
- YouTubeを再生したときに、1で設定したボリュームになるのか、2で設定したミュートになるのか確認
HTML
<div id="sample"></div>
JavaScript(1ページ目)
// YouTube Player APIを読み込む
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// プレーヤーを埋め込む場所
var ytArea = 'sample';
 
// 埋め込むYouTube ID
var ytID = 'UB3WKlkIqYo';
 
// プレーヤーのサイズを指定
var ytWidth = 640;
var ytHeight = 390;
 
// API読み込み後にプレーヤー埋め込み
function onYouTubeIframeAPIReady() {
	ytPlayer = new YT.Player(ytArea, {
		height: ytHeight,
		width: ytWidth,
		videoId: ytID
	});
}
JavaScriptからボリュームを変更した場合に引き継がれるかのデモページ1
JavaScript(2ページ目)
// YouTube Player APIを読み込む
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// プレーヤーを埋め込む場所
var ytArea = 'sample';
 
// 埋め込むYouTube ID
var ytID = 'WTneeCE4Dcg';
 
// プレーヤーのサイズを指定
var ytWidth = 640;
var ytHeight = 390;
 
// API読み込み後にプレーヤー埋め込み
function onYouTubeIframeAPIReady() {
	ytPlayer = new YT.Player(ytArea, {
		height: ytHeight,
		width: ytWidth,
		videoId: ytID,
		events: {
			'onStateChange': onPlayerStateChange
		}
	});
}
function onPlayerStateChange(e) {
	var ytStatus = e.target.getPlayerState();
	if(ytStatus == 1) {
		ytPlayer.setVolume(0);
	}
}
JavaScriptからボリュームを変更した場合に引き継がれるかのデモページ2
JavaScript(3ページ目)
// YouTube Player APIを読み込む
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// プレーヤーを埋め込む場所
var ytArea = 'sample';
 
// 埋め込むYouTube ID
var ytID = 'STg4Ya8bEFo';
 
// プレーヤーのサイズを指定
var ytWidth = 640;
var ytHeight = 390;
 
// API読み込み後にプレーヤー埋め込み
function onYouTubeIframeAPIReady() {
	ytPlayer = new YT.Player(ytArea, {
		height: ytHeight,
		width: ytWidth,
		videoId: ytID
	});
}
JavaScriptからボリュームを変更した場合に引き継がれるかのデモページ3
結果は最初に設定した値になっていたので、JavaScriptから変更したボリュームは引き継がれていないようでした。
 
2ページ目でJavaScriptでミュートにした部分を80に変更する形でも試してみます。
JavaScriptの31行目にあるsetVolumeの値を変更しただけなので、コードは割愛します。
JavaScriptからボリュームを変更した場合に引き継がれるかのデモページ2-1
JavaScriptからボリュームを変更した場合に引き継がれるかのデモページ2-2
JavaScriptからボリュームを変更した場合に引き継がれるかのデモページ2-3
結果は同じく、JavaScriptから変更したボリュームは引き継がれませんでした。
ミュートにした状態で自動再生させる場合、サイト内にある別ページのYouTubeにも対応がいるのかなと思っていたのですが、JavaScriptから変更したボリュームは引き継がれないようなので特に対応はいらなそうです。
 

コメントが承認されるまで時間がかかります。