HTML 入門

HTML <video> タグ

<video> タグを使用すると、外部プラグインやプレイヤーを必要とせず、動画コンテンツを HTML ページに直接埋め込むことができます。
これにより、シームレスで統合されたユーザーエクスペリエンス(UX)を提供することが可能になります。
本セクションでは、<video> タグの属性、機能、およびベストプラクティスについて深く掘り下げていきます。

1.  <video>タグの基本理解

HTML5 における <video> タグは、動画や映画を定義するための要素です。
これはコンテナ要素であり、一つまたは複数の <source> タグを内包できます。各ソースタグは異なる動画ファイルを指し、ブラウザは自身がサポートしている最初の <source> を自動的に選択します。ブラウザが <video> 要素をサポートしていない場合にのみ、タグ内部のテキスト内容が表示されます。

以下は、<video> タグの基本的な使用例です。

<video controls width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
  <source src="myvideo.webm" type="video/webm">
  お使いのブラウザは video タグをサポートしていません。
</video>

この例のポイント:

  • controls: 再生、一時停止、音量調節などのデフォルトのコントロール UI を追加します。
  • width と height: 動画の表示サイズを指定します。
  • <source> タグ: ブラウザの互換性を確保するために、異なる動画フォーマットを提供します。
  • 「お使いのブラウザは...」: これはフォールバックメッセージ(Fallback message)です。

2. <video> タグの主要な属性

<video> タグには、動画の再生、外観、動作を制御するための多様な属性が用意されています。特に重要なものを詳しく見ていきましょう。

2.1 src 属性(非推奨)

<source> タグを使用する方法が推奨されますが、<video> タグ内に直接 src 属性を記述してソースを指定することも可能です。ただし、複数のフォーマットを提供して柔軟性を高めるためには、<source> タグの利用が適しています。

<video controls width="640" height="360" src="myvideo.mp4" type="video/mp4">
  お使いのブラウザは video タグをサポートしていません。
</video>

2.2 controls 属性

controls 属性は、動画プレイヤーにデフォルトのコントロール(インターフェース)を表示します。これには通常、再生/一時停止、音量、プログレスバー、全画面表示オプションが含まれます。

<video controls>
  <source src="myvideo.mp4" type="video/mp4">
</video>

この属性がない場合、動画はロードされますが、ユーザーは再生をコントロールできません(JavaScript でカスタムコントロールを実装する場合を除く)。

2.3 width と height 属性

これらの属性は、動画プレイヤーの幅と高さをピクセル単位で指定します。これらを設定しておくことで、動画のロード中にページレイアウトが崩れる現象(リフロー / Reflow)を防ぐことができます。

<video controls width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
</video>

2.4 autoplay 属性

autoplay 属性を指定すると、ページがロードされた瞬間に動画が自動的に再生されます。
注意: この属性はユーザー体験を損なう可能性があるため、慎重に使用してください。多くのモダンブラウザでは、音声付きの自動再生をデフォルトでブロックしています。

<video controls autoplay muted width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
</video>

ヒント: ブラウザの自動再生ポリシーにより、通常は muted(消音)属性を併用しないと自動再生が機能しません。

2.5 loop 属性

loop 属性を指定すると、動画が終了した後に自動的に最初から再生を繰り返します。

<video controls loop width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
</video>

2.6 muted 属性

muted 属性は動画を消音状態にします。これは、ブラウザの自動再生ポリシーを回避するために autoplay と組み合わせてよく使われます。

<video controls autoplay muted width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
</video>

2.7 poster 属性

poster 属性は、動画のダウンロード中やユーザーが再生ボタンを押す前に表示される画像(サムネイル画像)を指定します。

<video controls poster="thumbnail.jpg" width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
</video>

2.8 preload 属性

preload 属性は、ページロード時に動画ファイルをどの程度ロードするかを指定します。以下の3つの値を受け取ります。

  • auto: ページロード時に動画全体をロードします。
  • metadata: ページロード時にはメタデータ(再生時間、サイズなど)のみをロードします。
  • none: ユーザーが再生を開始するまで動画をロードしません。
<video controls preload="metadata" width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
</video>

preload="metadata" はページ読み込み速度の向上に役立ち、preload="none" は特にモバイルユーザーの帯域幅を節約するのに有効です。

3.  <source>タグ

<source> タグは、<video><audio> 要素に対して複数のメディアリソースを指定するために使用されます。異なるフォーマットを提供することで、様々なブラウザでの互換性を確保します。

3.1 src 属性

<source> タグの src 属性は、動画ファイルの URL を指定します。

<source src="myvideo.mp4" type="video/mp4">

3.2 type 属性

type 属性は動画ファイルの MIME タイプを指定します。これにより、ブラウザはファイルをダウンロードする前に再生可能かどうかを判断できます。一般的な MIME タイプは以下の通りです:

  • video/mp4: MP4 動画用
  • video/webm: WebM 動画用
  • video/ogg: Ogg 動画用
<source src="myvideo.webm" type="video/webm">

4. 複数フォーマットの提供

幅広いブラウザ互換性を確保するためには、複数の動画フォーマットを提供することが不可欠です。

<video controls width="640" height="360">
  <source src="myvideo.mp4" type="video/mp4">
  <source src="myvideo.webm" type="video/webm">
  <source src="myvideo.ogg" type="video/ogg">
  お使いのブラウザは video タグをサポートしていません。
</video>

この例では、ブラウザはまず MP4 の再生を試みます。MP4 をサポートしていない場合は WebM、次に Ogg を試します。すべてサポートされていない場合に、フォールバックメッセージが表示されます。

5. 主要な動画フォーマットとコーデック

異なるプラットフォームで高品質な動画を提供するために、動画形式について理解しておくことが重要です。

  • MP4: 最も広くサポートされているフォーマット。H.264 ビデオコーデックと AAC オーディオコーデックを使用します。品質と互換性のバランスに優れています。
  • WebM: Google が開発したオープンソース形式。VP8 または VP9 ビデオコーデックを使用します。ライセンスフリーで、ウェブでの使用に非常に適しています。
  • Ogg: Theora ビデオコーデックを使用したオープンソース形式。MP4 や WebM に比べると利用シーンは限定的です。

5.1 選定のアドバイス

  • ブラウザ互換性: ターゲットユーザーのブラウザがその形式をサポートしているか確認してください。
  • ファイルサイズ: 画質を大きく損なうことなく、ネットワーク転送に適したサイズに最適化してください。
  • 品質: 妥当なファイルサイズで良好な視覚品質を提供するコーデックを選択してください。

6. アクセシビリティの考慮 (Accessibility)

  • 字幕の提供 (Captions): 字幕は、聴覚障害を持つユーザーにとって不可欠です。<track> 要素を使用して字幕を追加できます(詳細は後の章で解説します)。
  • テキストトランスクリプト (Transcripts): 動画の音声内容をテキスト版として提供します。
  • 音声解説 (Audio Descriptions): 視覚障害を持つユーザーのために、映像要素を説明するナレーションを提供します。
  • キーボード操作の確保: すべてのビデオコントロールがキーボードのみで操作可能であることを確認してください。

7. 実戦的なサンプルコード

7.1 例 1:基本的な動画の埋め込み

コントロール、指定されたサイズ、および複数のソースフォーマットを持つシンプルな動画の埋め込み。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>基本動画サンプル</title>
</head>
<body>
  <h1>マイビデオ</h1>
  <video controls width="640" height="360">
    <source src="myvideo.mp4" type="video/mp4">
    <source src="myvideo.webm" type="video/webm">
    お使いのブラウザは video タグをサポートしていません。
  </video>
</body>
</html>

7.2 例 2:自動再生されるミュート動画

消音状態でループ再生される自動再生動画の実装例です。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>自動再生ミュート動画サンプル</title>
</head>
<body>
  <h1>自動再生動画</h1>
  <video autoplay muted loop width="640" height="360">
    <source src="myvideo.mp4" type="video/mp4">
    <source src="myvideo.webm" type="video/webm">
    お使いのブラウザは video タグをサポートしていません。
  </video>
</body>
</html>

7.3 例 3:ポスター画像(サムネイル)付き動画

poster 属性を使用して、再生前に画像を表示する方法です。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ポスター画像付き動画サンプル</title>
</head>
<body>
  <h1>ポスター付き動画</h1>
  <video controls poster="poster.jpg" width="640" height="360">
    <source src="myvideo.mp4" type="video/mp4">
    <source src="myvideo.webm" type="video/webm">
    お使いのブラウザは video タグをサポートしていません。
  </video>
</body>
</html>