ライブストリームエンコーディングの仕組み | 動画エンコーディング

ライブストリームエンコーディングは、動画を小さなかたまりに分割して、CDN経由で動画データを配信します。このプロセスがライブストリーミングを高速化します。

Share facebook icon linkedin icon twitter icon email icon

ライブストリームエンコーディング

学習目的

この記事を読み終えると、以下のことができます。

  • ビデオファイルがエンコードされる理由を理解する
  • ライブストリームエンコーディングの仕組みを学ぶ
  • ライブストリームエンコーディングプロセスの改善によりレイテンシーを削減する方法を学ぶ

ライブストリーミングとは?

ストリーミングは、ユーザーにデータを完全にダウンロードさせずにインターネットを介してデータを配信する方法です。ストリーミングの一種であるライブストリーミングは、最初に記録および保存することなく、インターネットを介してリアルタイムでストリームを送信するというものです。

ビデオゲームストリーミング、PeriscopeやFacebook Liveといったソーシャルメディアストリーム、インターネットを介したプロスポーツ放送などは、すべてライブストリーミングの例です。音声と動画の両方をライブでストリーミングできますが、この記事ではライブ動画ストリーミングに焦点を当てます。

動画エンコーディングとは?

動画エンコーディングとは、効率よく別の場所に送信できるように動画データを圧縮するプロセスのことです。ストリームの受信側にあるデバイス(たとえば、ユーザーがお気に入りのテレビ番組を視聴しているタブレット)が、エンコードされたデータを復号化します。各種デバイスがエンコードされたストリームを解釈できるように、動画エンコーディングは公知の基準に従います。

次の2つの理由から動画エンコーディングは必要です:

  1. 圧縮されていない動画ファイルは、インターネットを介して送信するには時間がかかりすぎて、ストリーミングの実用性が損なわれてしまいます。
  2. 動画はどのデバイス(スマートフォン、ノートパソコン、デスクトップPCなど)でも解釈できる形式でなければなりません。

ライブ動画ストリーミングでは、デバイスが視聴覚入力を取得して、同時にすべての視聴者に送信します。このプロセスのエンコーディング部分は、さまざまなユーザーのデバイスが動画を受信して再生できるようにするために極めて重要です。

ライブストリームエンコーディングの仕組み

動画キャプチャするソース(Webカメラなど)からのライブストリームはサーバーに送信され、HLSやMPEG-DASHといったストリーミングプロトコルが動画フィードを小さなセグメントに数秒ごとに分割します。

次に、エンコーディング基準を用いて動画コンテンツがエンコードされます。今日広く使われているエンコーディング基準はH.264ですが、VP9、AV1、HEVCといった基準の使用も増えています。このエンコーディングプロセスは、冗長な視覚情報を排除することで画像を圧縮します。たとえば、青空を背景に話をしている人のストリームでは、青空はほとんど変化しないので、動画のすべての瞬間にて青空のレンダリングを行う必要はありません。したがって、動画のほとんどのフレームから青空を削除することができます。

圧縮されてセグメント化された動画データは、 コンテンツ配信ネットワーク(CDN)を使用して配信されます。CDNを使用しないと、ライブストリームを読み込める視聴者は極めて少なくなります。この記事の最後に理由を説明します。

ほとんどのモバイルデバイスにはエンコーダーが内蔵されているので、ユーザーはソーシャルメディアプラットフォームまたはメッセージングアプリを介して容易にライブストリーム配信を行うことができます。より高品質のストリームを要求するブランドや企業は、独自のエンコーディングのソフトウェア、ハードウェア、またはその両方を使用します。

新しい技術はどのようにライブストリーミングを高速化するか?

多くのライブストリームでは、視聴者は依然として20~30秒のレイテンシーを経験しています。言い換えれば、閲覧しているコンテンツはリアルタイムではなく20~30秒遅れているのです。その理由は1つには、動画の各セグメントは完全に読み込まれてからでないと再生できないので、動画の各セグメントは読み込むのに数秒かかるからです。

この遅延を軽減する解決策の1つがチャンク形式エンコーディングと呼ばれるプロセスです。このプロセスは、動画セグメントをより小さなサイズのチャンク(塊)に分割するというものです。次に、そうした小さなチャンクをエンコードします。ストリームを受信するデバイスは、セグメント全体を読み込む前に小さなチャンクを再生できます。

CDNはどのようにライブストリーミングを加速化するか?

CDNがライブストリーミングにとって極めて重要なのは、異なる場所にいるユーザーにストリームを配信することを可能にするからです。また、CDNは、1つの配信元サーバーよりもストリーム配信用の帯域幅を確保できます。CDNなしでは、ライブストリームはすぐに帯域幅の問題に直面することになります。

しかし、ほとんどのCDNは依然として動画の全セグメントをロードしてからでないと、複数のユーザーに一度にセグメントを提供することができません。これにより、エンコーディングを分割することで解決できるはずのレイテンシーの問題が再浮上します。

ライブストリーミングを高速化するために、Cloudflareは同時ストリーミングアクセラレーションと呼ばれる機能を提供しています。Cloudflare CDNは、動画のセグメントを読み込んでいる間に一度に複数のエンドユーザーにそのセグメントを配信することができるので、セグメント全体が読み込まれるまで待たずに済みます。Cloudflareのグローバルネットワークは、100か国以上、200都市以上に広がっているので、全世界のユーザーがリアルタイムで高品質のライブストリームを視聴することができます。