Gatsby.jsでサイトを作成中。
html
1<video 2 type="video/mp4" 3 preload="metadata" 4 controls 5 src='http://example.com/xxx.mp4' 6/>
上記のようなvideoタグでサイトの中に動画を表示しています。
ときどきですが、動画が正常に再生されないことがあります。
30秒の動画なのに、0~1秒程度だけ再生して止まる。
metadataは読み込まれていて、動画が30秒であることはcontrolsの表示から分かる。
0~1秒再生して止まったとき、シークバーが0~1秒の所で止まるのではなく、30秒の地点まで一気に飛ぶ。
F5(再読み込み)をすると動画は正常に再生できるようになる。
addEventListener('error', ...)
でエラーを捕まえようとしたが、何も起こらず。
src
の読み込みに失敗するとerror
のイベントが発生するようなのですが、30秒の動画のうち0~1秒しか読み込みできていないのに、src
の読み込みは成功したものとして扱われているっぽい。
Chromeのデベロッパーツールで「Network」を見ると、mp4を読み込んでいる通信のstatusコードは206。
動画を30秒正常に表示できるときも206。
動画が1秒で止まるときも206。
問題発生時、document.createElement('video')
でvideoタグを作り直してやると、正常に動画の再生が可能です。
そこで、「問題が発生したら」「videoタグを作り直す」という処理をしたいのですが、問題発生を検知する部分でつまづいております。
動画のsrcに指定したmp4が一部しか読み込まれなかったことをJavascriptで検知するにはどうすればいいでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/22 07:27
2021/06/22 07:35
2021/06/22 07:59
2021/06/22 08:32 編集
2021/06/22 09:12
2021/06/22 09:23 編集