問題
・再生ボタンをクリック
・動画A(音あり)を再生開始
・ボタン押下3秒後、動画B(音なし)を再生開始
・2つの動画が同時に流れている状態が続く
コードをめちゃくちゃシンプルに書くとこんな感じ。
const startVideo = () => {
videoA.play()
setTimeout(() => {
videoB.play()
}, 3000)
}
playButton.addEventListener('click', startVideo)
上記のコードで、Android(Chrome)では問題なく動作したのですが、iOS(Safari)では以下のような動きになってしまいました。
・再生ボタンをクリック
・動画A(音あり)を再生開始
・ボタン押下3秒後、動画B(音なし)を再生開始すると同時に、動画Aが停止
・動画Bだけが流れていく...(特にエラーは出ていない)
なんで?(๑╹ω╹๑ )
原因と対処
どうやら自動再生ポリシーにひっかかっていたっぽいです。
以下のように、事前にビデオをミュートしておき、再生ボタンがクリックされたら、ミュートを外して再生する、という形で回避できました。
videoA.muted = true
videoB.muted = true
const startVideo = () => {
videoA.muted = false
videoA.play()
setTimeout(() => {
videoB.play()
}, 3000)
}
playButton.addEventListener('click', startVideo)
※ただ、今回の仕様として、後から再生するvideoBがたまたま無音だったのでうまくいったケースと言えるかもしれません。
0 コメント