CGJU
ツール検索サイト
2026年6月10日 · 読了時間 5分

HTML5 videoタグの基礎

HTML5が登場する前、Webでの動画再生は主にFlashやQuickTimeなどのサードパーティプラグインに依存していました。HTML5ではネイティブの <video> タグが導入され、ブラウザでの動画再生がネイティブでサポートされるようになりました。これはWeb動画の歴史における重要なマイルストーンです。

videoタグの基本的な使い方

videoタグを使って動画を再生するのは非常に簡単で、数行のコードで実現できます:

<video src="video.mp4" controls width="640" height="360">
    お使いのブラウザは動画再生に対応していません
</video>

よく使われる属性

  • src:動画ファイルのURL
  • controls:再生コントロールバーを表示
  • autoplay:自動再生(通常はmutedと併用が必要)
  • loop:ループ再生
  • muted:ミュート
  • poster:動画のサムネイル画像
  • preload:プリロード戦略

対応している動画フォーマット

ブラウザによって対応している動画フォーマットが異なり、これは初期のHTML5動画が直面した最大の課題でした:

  • MP4 (H.264 + AAC):互換性が最も高く、すべてのモダンブラウザが対応
  • WebM (VP8/VP9 + Vorbis/Opus):Chrome、Firefoxが対応
  • OGG (Theora + Vorbis):Firefox、Chromeが対応

すべてのブラウザに対応するため、sourceタグを使用して複数のフォーマットを提供できます:

<video controls>
    <source src="video.mp4" type="video/mp4">
    <source src="video.webm" type="video/webm">
    お使いのブラウザは動画再生に対応していません
</video>

ネイティブvideoタグの限界

ネイティブvideoタグはシンプルで使いやすい一方、明らかな限界もあります:

  • ストリーミング非対応:完全なファイルの再生のみ可能で、HLS/DASHなどのストリーミングプロトコルには対応していない
  • アダプティブビットレート非対応:ネットワーク状況に応じて画質を切り替えることができない
  • DRM非対応:暗号化された保護コンテンツを再生できない
  • フォーマットサポートが限定的:ブラウザがネイティブで対応しているフォーマットしか再生できない

Media Source Extensionsの原理

Media Source Extensions(MSE)はW3Cが策定したAPI標準で、JavaScriptがメディアデータを動的にvideoタグに注入できるようにし、ストリーミング配信を実現します。MSEは現代のWeb動画再生のコア技術であり、HLS.jsやdash.jsなどのプレーヤーはすべてMSEをベースに実装されています。

MSEのコアコンセプト

  • MediaSource:メディアデータソースを表し、video要素にアタッチできます
  • SourceBuffer:メディアデータを格納するバッファ
  • SourceBufferList:SourceBufferのリスト

MSEのワークフロー

MSEの基本的なワークフローは以下の通りです:

  1. MediaSourceオブジェクトを作成
  2. MediaSourceをvideo要素にアタッチ
  3. MediaSourceがオープンされるのを待つ
  4. SourceBufferを作成
  5. fetchまたはXHRでメディアチャンクを取得
  6. データをSourceBufferに追加
  7. videoタグがSourceBufferからデータを読み込んで再生

MSE基本コード例

const video = document.querySelector('video');
const mediaSource = new MediaSource();
video.src = URL.createObjectURL(mediaSource);

mediaSource.addEventListener('sourceopen', function() {
    const sourceBuffer = mediaSource.addSourceBuffer('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
    
    fetch('video-chunk.mp4')
        .then(response => response.arrayBuffer())
        .then(data => {
            sourceBuffer.appendBuffer(data);
        });
});

MSEの利点

  • ストリーミング対応:HLS、DASHなどのストリーミング再生を実現可能
  • アダプティブビットレート:ネットワーク状況に応じて動的に画質を切り替え可能
  • 柔軟な制御:JavaScriptがバッファ戦略を完全に制御可能
  • 複数フォーマット対応:デマルチプレクスできれば再生可能

Encrypted Media Extensions

Encrypted Media Extensions(EME)は、DRM(デジタル著作権管理)で保護されたメディアコンテンツを再生するための重要なAPIです。Netflix、YouTube Premium、Disney+などの動画サイトは、動画コンテンツの海賊版対策としてEMEを使用しています。

EMEのコアコンポーネント

  • MediaKeys:復号鍵のセットを表します
  • MediaKeySession:復号セッション。鍵のネゴシエーションに使用されます
  • MediaKeySystemAccess:特定のDRMシステムへのアクセスに使用されます
  • CDM:コンテンツ復号モジュール(Content Decryption Module)

主なDRMシステム

ブラウザやデバイスによって対応しているDRMシステムが異なります:

  • Widevine:Google開発。Chrome、Firefox、Androidが対応
  • PlayReady:Microsoft開発。Edge、Xboxが対応
  • FairPlay:Apple開発。Safari、iOSが対応
  • PrimeTime:Adobe開発。徐々に置き換えられつつあります

EMEのワークフロー

  1. ブラウザが対応するDRMシステムを検出
  2. MediaKeysを作成し、video要素にアタッチ
  3. 復号セッションを作成
  4. ライセンスリクエストを生成
  5. ライセンスサーバーにリクエストを送信して鍵を取得
  6. セッション鍵を更新
  7. 動画を復号して再生

EME基本コード例

const video = document.querySelector('video');

navigator.requestMediaKeySystemAccess('com.widevine.alpha', [
  {
    videoCapabilities: [{ contentType: 'video/mp4; codecs="avc1.42E01E"' }]
  }
]).then(access => {
  return access.createMediaKeys();
}).then(mediaKeys => {
  return video.setMediaKeys(mediaKeys);
}).then(() => {
  video.src = 'encrypted-video.mp4';
  video.play();
});

WebCodecs API

WebCodecsはブラウザが提供する低レベルAPIで、Web開発者がブラウザに内蔵されたメディアコーデックに直接アクセスできるようにします。MSEと比較して、WebCodecsはより低レベルで柔軟性が高く、パフォーマンスも優れており、Web動画技術の将来の方向性です。

WebCodecsが提供するインターフェース

  • VideoDecoder:動画デコーダー
  • VideoEncoder:動画エンコーダー
  • AudioDecoder:音声デコーダー
  • AudioEncoder:音声エンコーダー
  • VideoFrame:動画フレーム
  • EncodedVideoChunk:エンコード後の動画データチャンク

WebCodecsの利点

  • 高性能:コーデックに直接アクセスすることで、中間処理を削減
  • 高い柔軟性:エンコード・デコードプロセスを完全に制御可能
  • エンコード対応:デコードだけでなく、動画のエンコードも可能
  • 低遅延:リアルタイム通信などの低遅延シナリオに適しています
  • WebAssemblyとの連携:WASMと組み合わせることで、より多くのフォーマットに対応可能

WebCodecsの活用シーン

  • 動画エディター:ブラウザでプロフェッショナルな動画編集を実現
  • リアルタイム通信:WebRTC以外の低遅延動画
  • クラウドゲーミング:ゲーム画面のレンダリング
  • 動画処理:フィルター、エフェクトなどのリアルタイム処理
  • 動画収録:カメラや画面の収録

WebCodecsデコード例

const decoder = new VideoDecoder({
  output: frame => {
    const canvas = document.querySelector('canvas');
    const ctx = canvas.getContext('2d');
    ctx.drawImage(frame, 0, 0);
    frame.close();
  },
  error: e => console.error(e)
});

decoder.configure({
  codec: 'vp09.00.10.08',
  codedWidth: 1280,
  codedHeight: 720
});

fetch('encoded-chunk.vp9')
  .then(res => res.arrayBuffer())
  .then(data => {
    const chunk = new EncodedVideoChunk({
      type: 'key',
      timestamp: 0,
      data: data
    });
    decoder.decode(chunk);
  });

各ブラウザの対応状況

HTML5 videoタグの対応状況

  • Chrome:完全対応
  • Firefox:完全対応
  • Safari:完全対応。かつHLSをネイティブでサポート
  • Edge:完全対応
  • モバイルブラウザ:ほぼすべて対応

MSEの対応状況

  • Chrome:対応。デスクトップ版・モバイル版ともに対応
  • Firefox:対応
  • Safari:デスクトップ版は対応、モバイル版は限定的に対応
  • Edge:対応

EMEの対応状況

  • Chrome:Widevineに対応
  • Firefox:Widevineに対応
  • Safari:FairPlayに対応
  • Edge:PlayReadyとWidevineに対応

WebCodecsの対応状況

  • Chrome:完全対応(Chrome 94以降)
  • Firefox:部分的に対応。開発中
  • Safari:部分的に対応。開発中
  • Edge:完全対応

再生技術の進化

第1世代:プラグイン時代(2005-2010)

Flash Playerを代表として、ブラウザ自体は動画に対応しておらず、サードパーティ製プラグインのインストールが必要でした。メリットはフォーマットが統一され機能が豊富なこと、デメリットはセキュリティ面の脆弱性、低パフォーマンス、モバイルデバイス非対応でした。

第2世代:ネイティブ再生(2010-2015)

HTML5 videoタグが登場し、ブラウザがネイティブで動画再生に対応しました。メリットはプラグイン不要でパフォーマンスが良いこと、デメリットはストリーミングとDRMに非対応で、フォーマットが統一されていないことでした。

第3世代:MSE/EME時代(2015-2020)

MSEとEMEが標準化され、ストリーミング配信とDRMが可能になりました。HLS.js、dash.jsなどMSEベースのプレーヤーが多数登場し、Web動画の体験が大幅に向上しました。アダプティブビットレートや暗号化再生が標準機能となりました。

第4世代:WebCodecs時代(2020年〜現在)

WebCodecs APIが低レベルなコーデック機能を提供し、WebAssemblyのパフォーマンスが大幅に向上しました。ブラウザでより複雑な動画処理が可能になり、クラウドゲーミング、動画編集、リアルタイム通信などのアプリケーションが盛んに発展しています。

今後の展望

  • WebGPUによる加速:GPUアクセラレーションによる動画処理
  • AI動画処理:ブラウザでのAI超解像、ノイズ除去など
  • より多くのコーデックサポート:AV1、H.266など新しいコーデックへの対応
  • 没入型メディア:VR/AR動画再生

まとめ

ブラウザ動画再生技術は、プラグインからネイティブへ、単純な再生からストリーミングへ、固定フォーマットから柔軟な制御へと進化してきました。HTML5 videoタグが基礎であり、MSEがストリーミング再生を可能にし、EMEがコンテンツ保護を実現し、WebCodecsがより広範な可能性を切り開いています。

これらの技術原理を理解することで、Web動画プレーヤーの仕組みをより深く理解できます。これらの技術の実際の効果を体験したい方は、M3U8オンラインプレーヤーをご利用ください。HLS.jsとMSE技術をベースに実装されており、ブラウザで直接HLSストリーミングを再生できます。

関連記事

その他の役立つ記事とツール

Webでの動画再生を体験してみませんか?

無料のM3U8オンラインプレーヤーで、ソフトウェアのインストール不要。ブラウザで直接HLSビデオストリームを再生できます

今すぐ体験 ➡