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=rid
と a=simulcast
を利用できます。
JavaScript では setParameters
の sendEncodings
を利用することでクライアントから解像度、ビットレート、フレームレートなどを指定可能です。
Simulcast の負荷¶
配信する解像度に依存しますが、基本的には 1/4 と 1/8 の解像度を配信するため、30% 程度の CPU 使用率アップと考えてもらって構いません。
Simulcast でできること¶
rid ベース Simulcast と SFU での利用を前提としています
クライアント側での解像度、ビットレート、フレームレート、アクティブの有無が指定可能
Offer でクライアントに対して Simulcast を要求できる
最大 4 種類までの画質を指定できる
同一解像度でフレームレートだけが異なるといった事も可能