Simulcast

最終更新日:

2020-11-08

Simulcast とは

Simulcast は配信者が複数画質の映像を送るという仕組みです。P2P で利用されるのではなく SFU 向けの機能です。

SFU では映像を変換しないためユーザごとに配信されるビットレートを選択できません。例えば配信者が 1Mbps で映像を配信したとしても、 視聴者の 1 人が 500kbps しか帯域がない場合は映像を見ることができなくなります。

これを解決するのが Simulcast です。配信者が複数の画質の映像を SFU に送り SFU は視聴者に最適な映像を送ることで、 視聴者は配信者より帯域が少ない場合でも視聴が可能になります。 HLS や MPEG-DASH でいうアダプティブビットレートをサーバ無変換で実現する技術です。

Simulcast の実装

rid (RTP Stream ID) を利用した Simulcast 実装がすべてのブラウザで採用されています。

SDP の a=rida=simulcast を利用できます。 JavaScript では setParameterssendEncodings を利用することでクライアントから解像度、ビットレート、フレームレートなどを指定可能です。

Simulcast の負荷

配信する解像度に依存しますが、基本的には 1/4 と 1/8 の解像度を配信するため、30% 程度の CPU 使用率アップと考えてもらって構いません。

Simulcast でできること

rid ベース Simulcast と SFU での利用を前提としています

  • クライアント側での解像度、ビットレート、フレームレート、アクティブの有無が指定可能

  • Offer でクライアントに対して Simulcast を要求できる

  • 最大 4 種類までの画質を指定できる

  • 同一解像度でフレームレートだけが異なるといった事も可能

資料