PLAY DEVELOPERS BLOG

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

動画データの世界への基礎概論

こんにちは。クラウド推進技術部の山田です。

昨今、動画配信は、生活の一部になるほど身近になっています。
YouTubeの動画、ストリーミングサービスの映画、SNSの投稿動画、Webサイトの動画広告など、ブロードバンドやスマホが普及し、今や外で動画を見ることも当たり前の世の中です。

では、実際に配信したい場合はどうでしょう?
こちらも、エコシステム化が進んだことで、配信のハードルは下がり、スマホさえあれば、対応サービスで簡単に誰でも動画配信ができてしまう時代になりました。深い知識がなくても利用できることは喜ばしいことです。

しかし、その何気なく見ている動画や利用しているサービスは、裏側に複雑な技術要素があります。
既に動画の基礎についての記事は世の中に溢れてはおりますが、初めて動画や配信の中身に興味を持った方々に向け、他の記事を読むときの参考資料や、さらに深く探索していくための道標を目指し、広く浅くとにかくキーワードを並べました。

この記事を通じて、動画データの世界への扉を開き、その一端に触れてみましょう。

動画について

まずは「動画データ」と「動画配信」について考える前に、「動画」とはどういうものか整理していこうと思います。

動画(アニメーション / Animation)と動画(ビデオ / Video)

皆さんは「パラパラ漫画」を描いたことはあるでしょうか?
パラパラ漫画が動いて見えるのは目の錯覚が関係しています。「動画」も、連続性のある画を順番に切り替えていくことで動いて見える画像です。パラパラ漫画が動いて見える原理とほぼ同じ仕組みを使って動きを表現します。これはアニメーションと同じ意味です。 ですが、ブロードバンドの普及とともに一般的に使われるようになった「動画」は、もっと広い意味を持ち、映像データや音声データなどを一つにまとめたデジタルデータを動画と呼ぶことが多いかもしれません。冒頭で使ったYouTubeの動画などはこちらの意味です。また、動画に対して連続しない単独の画像データを静止画と言います。時には音声が主役になったりと、音声も、動画にとって重要な構成要素になります。

フレームの例
アニメーションの例

映像(ビデオ / Video)と音声(オーディオ / Audio)

動画の重要な構成要素である、映像や音声はそれぞれどういった意味なのでしょうか?
「映像」はもともとは光の屈折・反射などによって映し出された写像でしたが、映画やテレビ放送の化学的・電子的に再現・創作された画像を指す用語として広まりました。*1
「音声」は、声などの音のことで、映像よりも古くから使われている表現ですが、録音と再生技術が発展したことで、それ以前は無音だった映画に音声を同期できるようになったりと、動画にとって重要な要素になりました。

再生と画面とスピーカー

映像と音声の他にも、動画にとって重要な要素があります。それは、どのように動画を再生するかです。私たちは、アナログの世界に生きているので、動画もアナログに変換する必要があります。動画を再生する際、映像は、画像が光に変換され、画面が反射または発光しながら高速に切り替わることで映像として見ることができます。音声は、スピーカー内部の振動板を振動させることで音に変換され聴くことができます。再生する方式は多岐に渡り、画面やスピーカーによっても特性が異なるので、今回詳細は割愛しますが、様々な要素技術が使われています。

アナログとデジタル

アナログとデジタルについて軽く触れます。
現実世界で人間が見たり聞いたりしている情報は、波などの滑らかで連続的な情報です。情報量が膨大で曖昧な表現も可能ですが、保存が難しく減衰等の劣化が起こりやすいです。この連続的な情報がアナログです。対して、数値や記号などの情報は段階的で明確なので保存も容易ですが、連続した滑らかで曖昧な表現が苦手です。この段階的な情報をデジタルと言います。
アナログは古いイメージがありますが、実際はそんなことはなく、現実世界で生活している以上どこかでアナログが必要になります。現代では、劣化が少なく機械で扱ったりする場合にデジタル情報の方が有利なため、伝送途中などはデジタル情報で扱うようになっています。

動画データについて

「動画」について整理したので、改めて「動画データ」について述べていきます。
動画配信は、大まかに下図のような流れで行われます。エンコードから配信、再生までの中で、実際にどのような技術が使われているでしょうか。 まずは、配信される動画データとエンコードについてです。

動画配信の流れ

動画データ

一般的に動画データは、映像データと音声データ、その他のデータで構成されます。各データが一つのファイルにまとまっている形式もあれば、別々のファイルに分かれている形式もあります。では、構成要素である各種データはどのようなデータでしょうか?

映像データ

映像データは、連続した画像データの並びで構成されます。各画像データは画素数分の色データが並んでいます。コーデックや色空間などによってデータの形式が異なり、色空間には「RGB」や「YCbCr」などがあります。

解像度

解像度は、画素数の場合は画像の幅と高さで1920×1080のように表現し、密度の場合は、インチあたりの画素数をppi(pixel per inch)で表現します。

アスペクト比

画像の幅と高さの比をアスペクト比と言います。現在では、概ね16:9が多いですが、映画やSNSの規格で、さまざまなアスペクト比の動画が存在します。

フレーム

連続した画像の1コマ1コマをフレームと言います。全てのフレームを完全な画像データとして持つことも可能ですが、データ容量が大きくなってしまいます。そこで現在主流の映像データの形式では、完全な画像データをもつフレームをキーフレームと言い、一定の間隔でキーフレームが存在し、その間のフレームはその前のフレームなどから変化があった差分部分のみのフレームが並びます。この圧縮の手法をフレーム間予測と言い、キーフレームから次のキーフレームまでをGOP(Group of Picture)と言います。
H.264等の代表的なMPEG系のコーデックでは、キーフレームを I(intra)フレーム、その他のフレームを P(predicted)フレーム、B(bi-directional predicted)フレームと言い、それぞれ以下のようなデータを持つフレームです。

  • Iフレーム
    そのフレームのみで完全な画像データを持つフレーム(画像的圧縮が使われる)
  • Pフレーム
    直前のIフレームとの差分を持つフレーム(先にIフレームのデコードが必要)
  • Bフレーム
    前後のIフレームやPフレームからの差分を持つフレーム(先に前後のIフレームとPフレームのデコードが必要)

フレーム間の差分のイメージ

フレームレート(Frame Rate)

1秒あたりのフレームが切り替わる頻度を、フレームレートといいます。単位はfps(frame per second)で、1秒間で30回切り替わることを、30fpsと表現します。フレームレートが高くなるほど激しい動きに対応できるようになります。常に一定のフレームレートを維持することをCFR(Constant Frame Rate)、場面毎にフレームレートを変化させることをVFR(Variable Frame Rate)と言います。

音声データ

音の成分は「大きさ」「高さ」「音色」があり、それぞれ波の「振幅」「波長」「周波数成分」で表現でき、音声データはその波を一定時間ごとに分割したデータの並びで構成されます。分割が細かいほど元の音の再現性が高くなります。

ビットレート(Bit Rate)

映像データ・音声データ共に1秒あたりの平均データ量をビットレートと言います。ビットレートが高くなるほど高画質や高音質になりますが、データ量が増えてしまいます。単位はbps(bit per second)で1秒あたりの平均データ量が100bitの場合、100bpsと表現します。動画全体で常に一定のビットレートを維持することをCBR(Constant Bit Rate)、場面ごとにビットレートが変動することをVBR(Variable Bit Rate)と言います。VBRは出来上がりのファイルサイズが予想できないため、あらかじめ平均値を決める手法をABR(Average Bit Rate)と言います。

その他のデータ

映像データと音声データだけでは動画データとしては不完全です。映像と音声を合わせて再生するためにはタイムスタンプ情報が必要になります。また他にも、動画の作成者などのメタデータもあります。

タイムスタンプ(Time Stamp)

タイムスタンプは、動画データ内の映像や音声の各フレームがどの時間に表示または再生されるべきかを示すものです。映像や音声を同期して再生するために必要な情報になります。
実際にそのフレームを再生する時間を示したタイムスタンプがPTS(Presentation Time Stamp)です。このPTSで再生タイミングが制御されていることで映像や音声が同期されます。多くはGOPなどの技術で圧縮されているため、デコードするタイミングや順番が重要になります。そのデコード順を示したタイムスタンプがDTS(Decoding Time Stamp)です。下図は、Pフレームを4番目に再生したい例です。しかし、2番目3番目のBフレームをデコードするためには、Pフレームを先にデコードする必要があるのでデータでは先に並んでいます。なので、DTSでは2番目に処理するように示され、実際に再生するタイミングのPTSは4番目になっています。

フレームのデコード順の例

コーデック(Codec)

動画データにおけるコーデックは、映像や音声のデータを規格に合わせて変換するアルゴリズムおよびその処理プログラムのことです。代表的な映像コーデックには「H.264/AVC」や「H.265/HEVC」、「AV1」、音声コーデックは「AAC」や「MP3」、「AC-3」などがあります。

データ圧縮

ほとんどのコーデックはエンコード時、データ容量を削減するために、冗長な部分の圧縮を行います。
動画の圧縮方法には、単一フレーム内の冗長な部分を圧縮をする「空間的圧縮」と、フレーム間の冗長な部分を圧縮する「時間的圧縮」があります。デコード時に元データに戻すことができる圧縮を「可逆圧縮」、元に戻せない圧縮を「不可逆圧縮」と言います。

エンコード(符号化 / Encoding)

エンコードは、アルゴリズムなどの規則にしたがってデータを変換する技術です。アナログデータからデジタルデータへの変換(AD変換 / Digitizing)のことを指す場合もあります。エンコードを行うハードウェアやソフトウェアをエンコーダーと言います。

標本化(Sampling)と量子化(Quantizing)

AD変換は、アナログデータを標本化、量子化することで行います。標本化はアナログデータから一定間隔で周期的に抽出します。この周期をサンプリング周期、単位時間あたりのサンプリング数をサンプリング周波数(レート)と言います。量子化は標本化で抽出したデータを8bitや16bitなどの決められた情報量の数値に置き換えます。この8bitなどの情報量をビット深度と言います。 例えば、映像の場合は、各フレームの画像を画素に分割し、抽出した画素ごとに平均値等のルールに従って色の数値に置き換えます。

アナログ画像
32×18サイズの標本化の例
各画素の量子化の例

トランスコード(Transcoding)

トランスコードは、動画の解像度、ビットレートを調整したい場合に、エンコードされたコーデックはそのままで、データの書き換えを行います。広義では別コーデックへの変換も含み、デコードと再エンコードを伴う場合があります。

コンテナと多重化(Multiplexer / MUX / カプセル化)

一般的にデータをまとめたものをファイルと言い、様々なファイル形式がありますが、その中でも複数のデータを格納できるファイル形式をコンテナと言います。動画ファイルも、映像データや音声データなどを一緒に格納する必要があるのでコンテナのファイル形式になります。また、映像データや音声データなど、複数のデータをコンテナにまとめることを多重化と言います。逆に、映像データや音声データに分離することをデマルチプレクス(DEMUX)と言います。代表的なコンテナに、「MP4」や「MPEG-2 TS」、「RIFF」などがあります。例えば、MP4はボックスと呼ばれる小分けの構造になっており、サイズやコーデック情報と実際の映像データ等を自由に入れることができ、色々なコーデックに対応できます。 また、コーデック等はそのままにコンテナを変更することをトランスマックス(Transmux)と言います。トランスマックスについては、以下の記事で解説されているので、ぜひご一読ください。

developers.play.jp

配信について

次にサーバーでの「配信」について述べていきます。配信時にも様々な技術や工夫が使われています。

動画配信

動画配信は、さまざまな通信手段で視聴者に動画を提供する方法の総称です。特に、従来の電波放送、衛星放送、ケーブル放送などのような特定の通信事業者を経由せず、一般的なインターネット回線を通じて配信することをOTT(Over The Top)配信と言います。以降も、主にOTTの動画配信に関連する技術について述べています。
OTTの動画配信では、動画データを再生環境にダウンロードして再生します。一番シンプルなダウンロード配信は、HTTPで動画データを全てダウンロードしてから再生を行う方法です。一度ダウンロードしてしまえばオフラインでも再生できますが、長時間の動画ではダウンロード完了までに時間がかかってしまうのが弱点です。そこで、ダウンロード中に再生を開始できる方法としてプログレッシブ・ダウンロード配信があります。ですが、ダウンロード配信と同様に再生環境にデータが残ってしまうのでセキュリティ面で不安が残ります。昨今の配信方法は、そういったセキュリティ面に配慮したプロトコルに対応したサーバーで配信を行うストリーミング配信が主流です。受け取ったデータを再生するためにはプロトコルに対応した再生環境が必要になりますが、共通規格により特殊な用意がなくとも対応できるようになっています。

プログレッシブ・ダウンロード(Progressive Download)

ダウンロード配信と同じくHTTPを使った配信方式で、Rangeリクエストによりサーバーに配置された動画ファイルのデータ範囲を指定して取得しながら再生を行います。

ストリーミング(Streaming)

データ通信を水の流れに例えて、送信された連続データをストリーム、順に処理して再生を行う配信をストリーミング配信と言います。ストリーミング配信には大きく2種類があり、リアルタイムに撮影から配信まで行うライブ配信、事前に用意した動画ファイルを配置し視聴者が任意のタイミングで視聴できるオンデマンド配信です。どちらの場合も、動画データはストリーミングプロトコルに対応した形式に変換する必要があります。

オンデマンド(On-Demand)配信

オンデマンド配信は視聴者の要求に応じてコンテンツを配信します。動画のオンデマンド配信をVODと言います。VOD配信には、マネタイズの方式により、AVOD・TVOD・SVODがあります。以下の記事ではVODの今後について解説しているので、ぜひご一読ください。

developers.play.jp

ライブ配信

ライブ配信は、配信者が決めた時間にリアルタイムに配信します。制作または撮影した動画をライブエンコーダーでエンコードを行いながら、エンコードした動画データをRTMPなどのプロトコルでライブストリーミングサーバーに送信します。サーバーは逐次ストリーミングプロトコルでパッケージングを行い、アクセスしてきた視聴者に配信されます。

パッケージング(Packaging)

動画ファイルをストリーミングプロトコルにしたがって変換することをパッケージングと言います。パッケージ時に同時にDRMをかけることもあります。 パッケージングを行う、機器やソフトウェアをパッケージャーと言います。

ストリーミングプロトコル(Streaming Protocol)

ストリーミングプロトコルは、ストリーミング配信に欠かせない技術です。データ通信では、どのようにやりとりするかを決める必要があります。そういった手順や規約がプロトコルです。動画配信では、HTTPベースのプロトコルが主流で、多くのサーバーや再生環境が対応しています。様々なプロトコルが存在しますが、動画データを数秒ごとのセグメントに分割し、セグメントをどの順番で再生するかが記された、プレイリストやマニフェストと呼ばれるファイルを別途HTTPでダウンロードし、その記述にしたがってセグメントをダウンロードをしつつ再生します。代表的なストリーミングプロトコルには、HTTPベースの「HLS」や「MPEG-DASH」、TCPベースの「RTMP」があります。HTTPベースのプロトコルについては、以下の記事でも解説されているので、ぜひご一読ください。

developers.play.jp

developers.play.jp

DRM(デジタル著作権管理)

DRMは、動画データに暗号化を施し、鍵を特定のルールで管理することで視聴権を持たない人に視聴させないようにする技術です。特に高画質配信では重要な要件になることがあります。近年では業界で標準化されたCENC(Common ENCryption)をベースにした、GoogleのWidevineやMicrosoftのPlayReadyなどがあります。

ストリーミングサーバー(Streaming Server)

オンデマンド配信の場合、事前にパッケージングした動画ファイルを配信するため、ほぼWebサーバーと同義です。 ライブ配信の場合は、配信する動画を逐次パッケージングする機能が必要になります。動画を再生環境向けにエンコードするライブエンコーダーの機能を有する場合もあります。

ネットワークの工夫

ストリーミングサーバーへのアクセス過多を防ぐために、ネットワークにストリーミングサーバーを複数設置してロードバランシングしたり、大規模配信では、CDN(Contents Delivery Network)と呼ばれる、視聴者の地域に近いキャッシュサーバーを自動で選択して代わりに応答してくれるネットワークサービスを利用する場合があります。これらの技術は動画配信に限ったものではありませんが、さまざまな技術が活用されています。代表的なCDNには、「Amazon CloudFront」や「Cloudflare」などがあります。

再生について

次にプレイヤーでの「再生」について述べていきます。
動画を再生する機器やソフトウェアをプレイヤーと言い、ダウンロードした動画データをプレイヤーで再生する際にも様々な技術が使われています。

デコード(復号 / Decoding)

ダウンロードしたデータを再生するためにはコーデックによるデコードが必要です。圧縮を解除したり、デジタルデータをアナログデータに変換することで、スクリーンやスピーカーで再生することができます。プレイヤー(再生機器やソフトウェア)が対応していないコーデックを使用しても再生できません。

バッファ(Buffer)と遅延

再生機器には、再生するタイミングに動画データが遅れた時、間に合うように、送られてきたデータをバッファに一旦溜めてから配信や再生を行うことで、猶予を持たせることができます。バッファを長くするほど、データの遅れに対処できますが、エンコードされた時間から遅くなるため、配信に遅延が発生します。 動画を安定的に配信するために必要な遅延ではありますが、昨今のライブ配信ではチャットなどでコミュニケーションを行う場合もあり、遅延が大きくなると配信者と視聴者のコミュニケーションが困難になるため、バッファを短くしたLL-HLSやLL-DASHなどの低遅延ライブ配信の需要が高まっています。

動画配信に関連するその他のキーワード

上記で紹介したキーワードは、それぞれもっと深く探究できます。その他にも動画に関する技術要素はたくさんあり、一部ではありますが、以下にキーワードを載せます。興味がありましたら探究してみてください。いつか、他の記事で取り上げられるかもしれませんね。

  • 双方向・インタラクティブ
  • ビデオ通話(Zoom・Teams・Slackなど)
  • 字幕
  • プレイヤー
  • ソフトウェア・ハードウェア(エンコーダー、ストリーマー)
    動画エンコードの代表的なソフトウエアであるFFmpegについて、以下の記事で解説されていますのでご一読ください。 developers.play.jp
  • 動画広告・サイネージ
    動画広告の仕組みについて、以下の記事で解説されていますのでご一読ください。 developers.play.jp
  • 動画配信の需要(映画やスポーツ、医療や学習)
  • クロスリアリティ(XR/VR/AR/MR)
  • AI(検知・追跡や生成系)

さいごに

本記事では、動画データと動画配信に関する大まかな流れと、技術や要素について紹介しました。
まだまだ紹介できなかった、動画配信に関連するキーワードもたくさんあります。動画配信には難しい話や、私も詳細を理解できていない部分が多くあるので、今後も知識を深めていけたらと思っています。
今後深掘りした記事が登場することを願いつつ、まだまだ広大な動画データの世界に興味を持っていただけたら幸いです。

ここまで読んでいただきありがとうございました。