JavaScriptで自動再生のvideoを埋め込む時の注意点

自動再生するvideoをJavaScriptで埋め込む機会があったのですが、iOS系の端末だけ再生されないということがあったので、その際の対応方法をメモしておきます。

うまくいかなかった場合

HTMLは以下のようにします。

<div class="box">
  <div id="mv"></div>
  <div class="front"></div>
</div>

#mv内にvideoタグを追加する想定です。

次にCSSです。

.box {
	position: relative;
}
#mv {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
#mv video {
	width: 100%;
	height: 100%;
}
.front {
    position: relative;
    width: 100%;
    padding-top: 56.25%; /* 360/640*100 */
}

最後にJavaScriptです。

var video = document.createElement('video');
video.muted = true;
video.autoplay = true;
video.loop = true;
video.playsinline = true;
video.src = 'video.mp4';
document.getElementById('mv').appendChild(video);

videoを作成して各属性を追加して、#mvに追加しています。
これで問題ないと思っていたのですが、iOS端末で自動再生が開始されませんでした。
うまくいかなかった場合のデモページ
 

対応方法

いろいろ試してみた結果、playsinlineの設定方法を変更するとiOSでも再生できるようになりました。

var video = document.createElement('video');
video.muted = true;
video.autoplay = true;
video.loop = true;
video.setAttribute('playsinline', '');
video.src = 'video.mp4';
document.getElementById('mv').appendChild(video);

setAttribute()を使って設定する形に変更しています。
対応後のデモページ
 

このエントリーをはてなブックマークに追加

関連記事

2件のコメント

  1. 玄鵬 より:

    まさにこの問題に直面していました。
    こちらの方法を試したところ、iOS safariで自動再生されることを確認できました。
    助かりました!ありがとうございます。

    • cly7796.net より:

      玄鵬さん
      コメントありがとうございます。
      問題解決されたようでよかったです。

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


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

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930