動画配信方式について整理してみた。

tonteki4
8 min readMar 16, 2020

--

前回こちらの記事で「動画の概要と仕組み」について整理しましたが、今回はその動画の配信方式について整理してみたいと思います。

本稿の対象者

最近ストリーミングとかよく聞くけど、よくわかっていない人や自社の動画配信サービスを構築したいけど、配信方式の前提知識がない人

本稿で知れること

動画配信方式の全体像から、今メインストリームになっているストリーミング 方式についてざっくり理解できます。

さて、今回テーマの動画配信方式ですが、主に「ダウンロード」と「ストリーミング 」の2つの方式があります。まずは「ダウンロード」から見ていきたいと思います。

ダウンロード

ダウンロードは大きく2つに分かれます。

ダウンロード方式

この方法はインターネット経由で動画のデータを自分のPCやスマートフォンに保存することを指します。そして保存した動画データを再生することをダウンロード再生と呼びます。

一旦ダウンロードしてしまえばオフラインでも再生可能なため、通信料を気にせず動画を再生することがメリットである反面、全てのデータをダウンロードしなければならないため、視聴したい時にすぐに視聴することができず、また、デバイスの容量を圧迫することがデメリットになります。

プログレッシブダウンロード方式

上記の方式が全ての動画データをダウンロードしなければいけないのに対して、プログレッシブダウンロードは「ダウンロードしながら再生する」ことを可能にします。

ただし、プログレッシブダウンロードも一種のダウンロードであることに変わりはないため、PCやスマホ内に一時的にファイル(キャッシュファイル)を保存することがあります。

ダウンロードしながら再生可能であるため、この後紹介するストリーミング 方式にちなんで「擬似ストリーミング 方式」と呼ばれることがあります。

ストリーミング

ストリーミング 方式

上記で説明したプログレッシブダウンロード方式が擬似ストリーミング方式と呼ばれるように非常に似ている方式ですが、異なる点は動画データをデバイスに保存しないため、情報漏洩の心配がなくセキュリティ面で安全であることが挙げられます。

ただし、この後紹介するHTTPストリーミングと違って、HTTPではなく独自のプロトコル(RTMP/MMC/RTSP)を使用するため、専用の再生プレイヤーが必要だったりします。

HTTPストリーミング方式

HTTP通信でストリーミング する方式です。上記と異なり独自のプロトコルを使用しないため、デバイス標準のプレイヤーやプラグインで再生可能です。

動画配信企業では、現在この方式がデファクトスタンダードになっているようです。さらなる詳細はこの後説明します。

HTTPストリーミング 方式

ここからが本題という感じがしますが、HTTPストリーミングを可能にする方式はさらに細分化されます。具体的には「HLS」、「MPEG-Dash」、「Smooth Streaming」、「HDS」等があります。順番に簡単に説明します。(現在は「HLS」もしくは「MPEG-Dash」がデファクトスタンダードになっているため、「Smooth Streaming」と「HDS」については割愛します。)

HLS(HTTP Live Streaming)の概要

Apple社が独自に開発した規格で、特徴として以下のような点があります。

・アダプティブビットレートストリーミングに対応している(後述します)

・LIVE配信にも対応している

・HTTPSによる暗号化とユーザー認証に対応している

・Webサーバーで配信可能

また、HLSはインデックスファイル(m3u8プレイリスト)とセグメントファイル(tsファイル)とに分かれて構成されています。

インデックスファイルは、セグメントファイルの場所や再生時間、再生順序などを定義したメタデータで、セグメントファイルはMPEG2TS形式で細かく分割された複数の動画データファイル形式で配信されます。

https://www.streamingmedia.com/Articles/Editorial/What-Is-.../What-Is-HLS-(HTTP-Live-Streaming)-78221.aspx?utm_source=related_articles&utm_medium=gutenberg&utm_campaign=editors_selection」から引用

MPEG-Dash(Dynamic Adaptive Streaming over HTTP)の概要

国際標準化機関ISO/IECによる新 しいストリーミング規格ですが、HLSと比較して概念的な違いはありません。上述したHLSの特徴はMPEG-Dashもカバーしています。

内部構造もHLSと似ているのですが、MPEG-Dashは、MPD(Media Presentation Description)とセグ メントファイルの2種類のファイ ルで構成されています。

MPDは,動画のエンコードパラメータ(符号化方式やビットレートな ど)や,セグメントの情報(セグメン トの分割単位や取得先など)など動画 のストリーミング再生に必要な情報を 記述したXML(Extensible Markup Language)形式のメタデータファイ ルです.

セグメントファイルは,エンコードした動画 を数秒単位に分割した動画ファイルであり,それぞれ単体でも再生可能です。 セグメントのフォーマットには, MPEG-4のファイルコンテナ仕様である ISO Base Media File Format (ISO/IEC 14496–12)と MPEG-2 Transport Stream(ISO/IEC 13818–1) とがあります.

https://qiita.com/gabby-gred/items/c1a3dbe026f83dd7e1ff」から引用

HLSとMPEG-Dashの違い

上記の説明だとはっきり言って何が違いかわからないので、少し調べてみました。

対応ブラウザの違い

  • HLSはSafari(Mac/iOS) / Android(Chrome/Browser) / IE11(?) / Edgeでしか動かない
  • MPEG-DashはChrome, Opera, FireFox, Win8.1 IE11, Win10 IE11でしか動かない
  • 対応ブラウザ以外で動作させるには「Media Source Extensions(MSE)API」を実装するか、MSEが実装されている動画プレイヤーを使用する必要があります。

他にも内部仕様の違いはあるようですが、ここではこれ以上言及しません。。。

CMAF(Common Media Application Format)

ここまで「HLS」と「MPEG-Dash」の2択で話を進めてきましたが、2種類存在するということは2種類のファイルを変換しなければならず運用のコストが増大します。

この複雑性に対応するために、Apple と Microsoft は、CMAF(Common Media Application Format) と呼ばれる共通の規格の策定を行い、2018年1月に正式に発行されました。

以下はCMAFの特徴です。

  • マニフェストファイル自体は定義しておらず、従来通りのmpd (MPEG-DASH) や m3u8 (HLS)をそのまま利用する
  • メディアファイルの形式は「 fragmented MP4」で共通化
  • セグメントファイルの中に「chunk」と呼ばれるより細かい単位を定義している
  • セグメントファイルを全てダウンロードしなくても、chunkを順番に取り込み再生できるため、より低遅延に動画の視聴体験を実現することが可能。

まとめ

  • 動画配信方式はHTTPストリーミング がデファクトスタンダード
  • HLS、MPEG-Dashが出てきて、より大きな流れとしての標準化の流れが進み「CMAF」が出てきた。
  • 「CMAF」を使用することでより低遅延な動画の視聴が可能

参考

https://www.nice2meet.us/hls-http-live-streaming

--

--