[js]youtube埋め込み高速化「lite yt embed」

明らかに違う。

ダウンロード

GitHub - paulirish/lite-youtube-embed: A faster youtube embed.
A faster youtube embed. Contribute to paulirish/lite-youtube-embed development by creating an account on GitHub.

サンプル

上が通常、下がjs。

Document

構築例

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="js/lite-youtube-embed/src/lite-yt-embed.css" />
    <script src="js/lite-youtube-embed/src/lite-yt-embed.js"></script>
</head>
<body>
    <iframe width="560" height="315" src="https://www.youtube.com/embed/iVstp5Ozw2o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
    <lite-youtube videoid="iVstp5Ozw2o" playlabel="Play"></lite-youtube>
</body>
</html>

展開例

クリック時にiframeが出力されるので、アクションがなければyoutubeの読み込みは発生しない。

読み込み時

<lite-youtube videoid="iVstp5Ozw2o" playlabel="Play" style="background-image: url("https://i.ytimg.com/vi/iVstp5Ozw2o/hqdefault.jpg");">
    <button type="button" class="lty-playbtn"><span class="lyt-visually-hidden">Play</span></button>
</lite-youtube>

再生時

<lite-youtube videoid="iVstp5Ozw2o" playlabel="Play" style="background-image: url("https://i.ytimg.com/vi/iVstp5Ozw2o/hqdefault.jpg");" class="lyt-activated">
    <button type="button" class="lty-playbtn"><span class="lyt-visually-hidden">Play</span></button>
    <iframe width="560" height="315" title="Play" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" src="https://www.youtube-nocookie.com/embed/iVstp5Ozw2o?autoplay=1&playsinline=1"></iframe>
</lite-youtube>

メリット

レスポンシブに対応してる。

同一ページに複数設置可能。

    <lite-youtube videoid="iVstp5Ozw2o" playlabel="Play"></lite-youtube>
    <lite-youtube videoid="iVstp5Ozw2o" playlabel="Play"></lite-youtube>
    <lite-youtube videoid="iVstp5Ozw2o" playlabel="Play"></lite-youtube>

マージン等はついてないので、これをラッピングして調整するのがいい感じ。

オプション

通常の埋め込みと同動作でいいならいじらなくていい。オプションを知りたかったら「Lite YouTube Embed」で調べたら色々出てくる。

YouTubeの埋め込みを高速化する Lite YouTube Embed
記事内に YouTube動画を埋め込む方法(レスポンシブ化とか)は過去に掲載しているのですが、動画を載せたページが重くて PageSpeed Insights で色々注意されるのですよ。^^; しょうがないよなぁ~と諦めていたのですが、それ...

サイズ調整

標準だと最大幅は720pxになってる。

もっと大きく設置したければ、max-widthのチェックを外せばいい。

lite-youtube{
    max-width: none !important;
}

注意点として、表示されてるサムネイルは「hqdefault.jpg」だから幅480pxということで、既に引き伸ばされてる。それをさらに大きくするのだから、粗が目立つ様になる。

画像の差し替えはstyle(background-image)でやっていくことになる。

<lite-youtube videoid="ogfYd705cRs" style="background-image: url('https://i.ytimg.com/vi/ogfYd705cRs/hqdefault.jpg');">
  <a href="https://youtube.com/watch?v=ogfYd705cRs" class="lty-playbtn" title="Play Video">
    <span class="lyt-visually-hidden">Play Video: Keynote (Google I/O '18)</span>
  </a>
</lite-youtube>
Youtubeのサムネイル取得は簡単 | デジタルコンサルタントAWS
仕事の中で、Youtubeのサムネイルを自動取得するような処理を書いてみようと思い立ち、その方法を調べてみました。 Youtubeのサムネイルは、とても簡単に取得できるのですね。 URLは、 …

でかい画像のバリエーションはあまりないのと、最大サイズは登録されてなかったら存在しないフォーマットらしいのでyoutubeから直接引っ張る際はチェックが必要。自前だったらサーバーにアップした画像を引っ張ってもいいと思います。

おまけ:PageSpeedInsights

スピードチェックをしたらツッコミが入った。要するに軽量化できるからどうにかしろという内容。

jsのなかにコメントアウトが大量にあるので削除する。TODOとかちらっと書いてたけど、勇気を出して削除する。minifyまでしなくても、これで改善した。

おまけ:php環境での組み込みを横着するための解のひとつ

wordpressへの組み込みが多いのでphpありきの話を。

いちいちURLから手動で動画の文字列を抽出するのがだるいので、コピペしたURLからphpで抽出した方がいいよなという話。手動だと自分で作っても日が経ってたらルールを忘れちゃうことは普通にあるし、単純に量が多い時にめんどいということもあるし。

で、ここを参考に以下の形。

<?php
$url = 'https://www.youtube.com/watch?v=iVstp5Ozw2o&ab_channel=VictorEntertainment';
parse_str(parse_url($url, PHP_URL_QUERY), $query);
if(isset($query)){
    $youtubeid = $query['v'];
    $liteyoutube = '<lite-youtube videoid="'.$youtubeid.'" playlabel="Play"></lite-youtube>';
    print $liteyoutube;  //<lite-youtube videoid="iVstp5Ozw2o" playlabel="Play"></lite-youtube>
}

端折れるところがあるけど理解のためにいちいち変数に格納してみた。

wpだったらカスタムフィールドでurlを登録して、出力時に上記の工程を噛ませたらいい。ついでに出力の有無でjsの読み込み判定を付けたら通信が軽くなりそうですね。

コメント

タイトルとURLをコピーしました