BLOG
ブログ
programming
WebサイトにYouTubeの動画を大量に埋め込んでも重くならないようにする方法
こんにちは、ティウェブ藤園です。
動画を埋め込んだWebサイトをよく見かけるようになりました。
Webサイトに動画を埋め込むにあたっては、
YouTubeに動画をアップして、それをWebサイトに
表示させる方法がよく使われている手法と思います。
ですが先日、1ページに80個以上(!)の
YouTube動画を一覧化して埋め込む案件があり、
加えてスマートフォンサイトということで、
いかに軽量化するかを考える必要がありました。
※ちなみに、80個以上のYouTube動画を
通常の埋め込み方法であるiframeタグの貼り付けで行うと、
ページが重すぎて読み込みエラーとなり、ページ自体が表示されませんでした。。。
■動画のサムネイル画像を使う
実は、YouTubeはサムネイル画像は簡単に取得できることをご存知でしょうか?
– サムネイル画像呼び出し例
– サムネイル画像を埋め込むコード
「YouTube動画のID」は、
アップロードした動画の再生ページのURLの末尾、
「watch?v=XXXXXXXXXX」の、「v=」の後の英数字を入れてください。
<img src="//i.ytimg.com/vi/YouTube動画のID/mqdefault.jpg" alt="">
※今回使用している「mqdefault」は320px×180pxサイズの画像です。
はじめはサムネイル画像だけを表示し、
ユーザーが再生したい動画を選択してはじめて動画データを読み込むようにすれば、
遅延読み込みよりも手軽に1ページのデータ量を軽量化することができます。
■デモ
実際にサムネイル画像を埋め込み、
クリックした際に動画を読み込む形にした例を記載します。
一見して、通常のiframeの埋め込みと差異はないように見えますが、
実際は動画のサムネイル画像のみを読み込んで、
その上に再生ボタンの画像を重ねただけの形となっています。
サムネイル画像から直接YouTubeにリンクする形でも問題はありませんが、
今回はWebサイトからの離脱を防ぐため、jQueryを使用してページ内でモーダルが開く形にしています。
※jQueryのモーダル系プラグイン「Magnific Popup」
https://dimsemenov.com/plugins/magnific-popup/
■デモのコード
<!-- CSS読み込み --> <link rel="stylesheet" href="./css/magnific-popup.css"> <!-- 動画のリンク、サムネイル呼び出し --> <p class="md_iframe_image"> <a href="//www.youtube.com/watch?v=YouTube動画のID" class="md_popup-iframe"> <img src="//i.ytimg.com/vi/YouTube動画のID/mqdefault.jpg" alt=""> </a> </p> <!-- jQueryの読み込み --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.min.js" async=""></script> <script> $(window).on('load', function(){ $('.md_popup-iframe').magnificPopup({ type: 'iframe', mainClass: 'mfp-fade', removalDelay: 200, preloader: false }); }); </script>
.md_iframe_image { background: #fff; } .md_iframe_image a { border: 2px solid #fff; display: block; position: relative; } .md_iframe_image a:hover { opacity: 0.6; } .md_iframe_image a::before { background: url(サムネイルに重ねる動画再生ボタンの画像) center center / 64px 64px no-repeat; content: ""; display: block; width: 64px; height: 64px; margin: -32px auto 0; position: absolute; top: 50%; left: 0; right: 0; z-index: 1; } .md_iframe_image a img { width: 100%; }
■まとめ
回線環境もずいぶん進化しており、重いWebサイトでも
それなりに表示されるようにはなってきていますが、
やはり動画となるとなかなかページが読み込まれずにイライラ……
ということも少なくないかと思います。
スムーズに表示されないページはユーザーの離脱率も高くなります。
ティウェブではこういった手法をはじめ、お客様によりよいWebサイトを
提供できるよう日々、研究や工夫を重ねています。