GIF を動画に置き換える

この Codelab では、アニメーション GIF を 動画をご覧ください。

最初に測定

まず、ウェブサイトのパフォーマンスを測定します。

  1. サイトをプレビューするには、[アプリを表示] を押します。[ 全画面表示 全画面表示
  2. Ctrl+Shift+J キー(Mac の場合は Command+Option+J キー)を押して DevTools を開きます。
  3. [Lighthouse] タブをクリックします。
  4. [カテゴリ] リストで [パフォーマンス] がオンになっていることを確認します。
  5. [Generate report] ボタンをクリックします。

完了すると、Lighthouse によって GIF が 「アニメーション コンテンツに動画フォーマットを使用する」の問題で監査です。

FFmpeg を入手する

GIF を動画に変換するにはいくつかの方法があります。このガイドでは、 FFmpeg.Glitch VM にインストール済みです 必要に応じて、こちらの手順に沿って ローカル マシン できます。

コンソールを開く

FFmpeg がインストールされ、動作していることを再度確認します。

  1. [Remix to Edit] をクリックして、プロジェクトを編集可能にします。
  2. [ターミナル] をクリックします(注: ターミナル ボタンが表示されない場合は、[全画面表示] オプションをご利用ください)。
  3. コンソールで次のコマンドを実行します。
which ffmpeg

ファイルパスが返されます。

/usr/bin/ffmpeg

GIF を動画に変更

  • コンソールで、cd images を実行してイメージ ディレクトリに移動します。
  • ls を実行して内容を確認します。

次のように表示されます。

$ ls
cat-herd.gif
  • コンソールで次のコマンドを実行します。
ffmpeg -i cat-herd.gif -b:v 0 -crf 25 -f mp4 -vcodec libx264 -pix_fmt yuv420p cat-herd.mp4

これにより FFmpeg は、-i フラグで示される入力を受け取り、 cat-herd.gif をダウンロードし、cat-herd.mp4 という動画に変換します。この処理には なります。コマンドが終了すると、再度 ls と入力できるようになります。 次の 2 つのファイルが表示されます。

$ ls
cat-herd.gif  cat-herd.mp4

WebM 動画を作成する

MP4 は 1999 年から存在していますが、WebM は比較的新しく、 2010 年に初めてリリースされましたWebM 動画は MP4 動画よりもはるかに小さいため、 両方を生成するのが合理的です。幸い <video> 要素を使用すると、 複数のソースを追加するため、ブラウザが WebM をサポートしていない場合、 MP4。

  • コンソールで次のコマンドを実行します。
ffmpeg -i cat-herd.gif -c vp9 -b:v 0 -crf 41 cat-herd.webm
  • ファイルサイズを確認するには、次のコマンドを実行します。
ls -lh

1 つの GIF と 2 つの動画が必要です。

$ ls -lh
total 4.5M
-rw-r--r-- 1 app app 3.7M May 26 00:02 cat-herd.gif
-rw-r--r-- 1 app app 551K May 31 17:45 cat-herd.mp4
-rw-r--r-- 1 app app 341K May 31 17:44 cat-herd.webm

元の GIF は 3.7M であるのに対し、MP4 バージョンは 551K であり、 WebM のバージョンは 341K のみです。かなりの節約になります。

HTML を更新して GIF 効果を再作成する

アニメーション GIF には、動画で再現する必要がある 3 つの重要な特徴があります。

  • 自動的に再生されます。
  • 連続してループします(通常は、ループを防ぐこともできます)。
  • 何も言わないから。

幸い、<video> 要素を使用して、これらの動作を再現できます。

  • index.html ファイルで、<img> の行を次の行に置き換えます。
<img src="/images/cat-herd.gif" alt="Cowboys herding cats.">
<video autoplay loop muted playsinline></video>

これらの属性を使用する <video> 要素は、自動的に再生されます。 音声なしの再生、全画面表示ではなくインライン再生、 アニメーション GIF に期待される動作🎉

ソースを指定する

あとは動画のソースを指定するだけです。<video> 要素には、 異なる動画ファイルを参照する 1 つ以上の <source> 子要素 サポートされる形式に応じて、ブラウザが選べるようになります。 cat-herd の動画にリンクする <source> 要素で <video> を更新します。

<video autoplay loop muted playsinline>
  <source src="/images/cat-herd.webm" type="video/webm">
  <source src="/images/cat-herd.mp4" type="video/mp4">
</video>

プレビュー

  • サイトをプレビューするには、[アプリを表示] を押します。[ 全画面表示 全画面表示

エクスペリエンスは同じに見えるはずです。ここまでは順調です。

Lighthouse で確認

公開サイトを開いて、次の操作を行います。

  1. Ctrl+Shift+J キー(Mac の場合は Command+Option+J キー)を押して DevTools を開きます。
  2. [Lighthouse] タブをクリックします。
  3. [カテゴリ] リストで [パフォーマンス] がオンになっていることを確認します。
  4. [Generate report] ボタンをクリックします。

[アニメーション コンテンツに動画フォーマットを使用する]監査が 合格です。おめでとうございます!💪