どうも、こうへいです。

今回の記事は、Javascript Tips!! ってことで、タイトル通りですが、HTML5のvideoタグに重い動画ファイルを読み込む際に、Javascriptを使って遅延ロードする方法です

自動再生 & iOS12で動作確認しました。

コードはこんな感じ。

実装

<!-- まずはvideoタグを設置 -->
<video id="video" muted webkit-playsinline playsinline loop autoplay></video>

<!-- js実装 -->
<script>
function lazyLoadVideo () {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://mameko.jp/lazymov.mp4', true);
    xhr.responseType = 'blob';
    xhr.onload = function (e) {
      if (this.status === 200) {
        // ロード完了
        var blob = this.response;
        var src = (window.webkitURL || window.URL).createObjectURL(blob);
        $('#video').append('<source type="video/mp4" src="' + src + '">');
      }
    };
    xhr.send();
  }
  // 実行
  lazyLoadVideo();
</script>

解説

jsで動画ファイル読み込んでからblob作って、sourceタグのsrcに突っ込んでからDOMに追加する。

以上!お試しあれ〜

この記事を書いた人

こうへい

Web developer && 映像クリエイター.