takumifukasawa’s blog

WebGL, Shader, Unity, UE4

YoutubeのIFrame Playerでcontrolsをオフにすると自動再生がされない

追記(2020/07/05)

解決法を発見しました。

onPlayerReadyでsetVolume(0)mute()を呼んで明示的に音声をオフにしてからplayVideoを呼ぶと自動再生されました。

↓ 検証コードはこちらになります

codepen.io

ただ、自動再生後に音量をスライダーなどで変えてsetVolumeを呼ぶと再生が停止されてしまいます。

どうやら自動再生時にオリジナルのUIによる動作を完全に制御するには、iframe内の要素を一度はクリックする必要があるようです。

元内容

javascriptでのYoutubeのIFrame Player API埋め込みを使って、 独自UIによるYoutube Iframeの制御の挙動を調査していたときに発見しました。

APIを使った埋め込みとiframeのembedのどちらも試した結果同じ挙動になっていたので、おそらくバグではなくYoutubeの仕様と思われます。

↓ 検証コードはこちらになります

codepen.io

controls オプション

controlsを0にするとYoutubeのUIを非表示にすることが可能なのですが、 その場合にautoplayを1にしても自動再生が効かなくなるようです。

controlsのオプションはこのような仕様になっており、特に自動再生との兼ね合いは書いてありませんでした。

動画プレーヤーのコントロールを表示するかどうかを指定します。
controls=0 – プレーヤー コントロールを表示しません。
controls=1(デフォルト)– プレーヤー コントロールを表示します。

developers.google.com

また、APIで埋め込んだiframeは最初に手動で動画をクリックして再生するまではplayVideoメソッドが効かないという挙動もありました。

そのため、独自UIと自動再生の両立が難しそうです。

YoutubeAPIを触るのは3年ぶりぐらいだったのですが、 もともとできないようになっていたのか、いつからか出来ないようになったのかまではわかりませんでした。