How does live stream encoding work? | Video encoding

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

学習目的

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

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

記事のリンクをコピーする

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

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

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

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

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

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

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

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

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

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

The video content is then encoded using an encoding standard. The encoding standard in wide use today is called H.264, but standards like H.265, VP9, and AV1 are also in use. This encoding process compresses the video by removing redundant visual information. For example, in a stream of someone talking against the background of a blue sky, the blue sky does not need to be rendered again for every second of video, since it does not change a lot. Therefore, the blue sky can be stripped out from most frames of the video.

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

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

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

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

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

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

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

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

To speed up live streaming, Cloudflare offers a feature called concurrent streaming acceleration. The Cloudflare CDN can deliver a segment of video to multiple end users at once while it is still loading, eliminating the wait time while the entire segment loads. The Cloudflare global network spans 250 cities in more than 100 countries, enabling users around the world to tune into a high-quality, real-time live stream.