マルチストリーム機能¶
概要¶
マルチストリームとは一つの PeerConnection の中で複数の映像や音声を動的に追加したり削除したりする仕組みです。 この機能を利用することで、複数の PeerConnection を管理せずに複数の映像や音声を使用できるようになります。
制限¶
配信側は音声 1 トラック、映像 1 トラック固定です
動的に配信側のトラックを追加したりするマルチトラックには対応していません
ブラウザ¶
Chrome、Firefox、Safari、Edge と主要ブラウザすべてでマルチストリームを利用できます。
シグナリング仕様¶
マルチストリームを利用する場合は、通常のシグナリングとは異なり、ユーザーが参加や離脱をするたびに SDP を交換する必要があります。
"type": "connect"¶
マルチストリームを利用する場合は "type": "connect"
時に "multistream": true
を追加します。
{
"type": "connect",
"role": "sendrecv",
"channel_id": "sora",
"multistream": true
}
"type": "re-offer"¶
sora.conf
にて use_re_offer を true
にするか、または DataChannel 機能を有効にした場合、
Sora は "type": "update"
の代わりに "type": "re-offer"
を送ります。
{
"type": "re-offer",
"sdp": ".."
}
"type": "re-answer"¶
"type": "re-offer"
が送られてきた場合、
クライアントから Sora へ送るメッセージは "type": "update"
ではなく "type": "re-answer"
である必要があります。
{
"type": "re-answer",
"sdp": ".."
}
"type": "update"¶
重要
"type": "update"
は 2022 年 6 月リリース予定の Sora にて廃止します。
"type": "re-offer"
と "type": "re-answer"
を利用する必要があります。
対応については SDK のアップデートのみで対応できるようにする予定です。
詳細は deprecated-type-update をご確認ください。
マルチストリームでは "type": "update"
を使用します。これはクライアントが接続、切断されたタイミングで送られてきます。
"type": "update"
を受け取ったらクライアントは "type": "update"
を送り返す必要があります。
Sora がクライアントへ送る "type": "update"
メッセージ
{
"type": "update",
"sdp": ".."
}
クライアントから Sora へ送る "type": "update"
メッセージ
{
"type": "update",
"sdp": ".."
}
role¶
マルチストリームでは role に sendrecv
と sendonly
と recvonly
を指定することができます。
sendrecv は配信と視聴を行います
sendonly は配信のみを行います
recvonly は視聴のみを行います
マルチストリームにおける映像ビットレート自動シェアリング機能¶
重要
マルチストリームではビットレート自動シェアリング機能がデフォルトで有効になっています。
音声のビットレートには影響しません
マルチストリームでは複数の映像を大量に受信するため、 配信側の映像ビットレートを、参加している配信者全員でシェアする機能がデフォルトで有効になっています。
そのため、マルチストリームにおける video の bit_rate は通常の bit_rate とは扱いが異なります。
例えば、bit_rate を 1200 と指定した場合、 2 人で配信している場合はそれぞれ配信に 600kbps ずつ使用します。 ここに 1 人が加わり 3 人になると、 1 人 400kbps ずつ使用して配信するようになります。
また、ここに 5 人が加わり、合計で 8 人になると、 1 人 150kbps ずつ使用して配信するようになります。
配信の合計のビットレートを指定するのが video の bit_rate です。
同じチャネルに参加している人が異なる bit_rate を指定した場合¶
2 人が同じチャネルに参加している状態で、1 人は映像のビットレートを 500 、もう 1 人は 1000 を指定して接続しているとします。 その場合、Sora では 500 を指定した人は配信に 250kbps を使用し、 1000 を指定した人は配信に 500kbps を使用します。
無効にする場合¶
sora.conf
の multistream_auto_sharing_video_bit_rate を false
に指定することで無効にできます。
注釈
設定を無効にした状態で、高いビットレートの配信者が増えていく場合、 クライアント側の転送量が増え、さらにデコードの負荷も高くなってしまいます。 そのため配信が安定的にできなくなり、結果的にクライアント側で配信ビットレートを下げるといった挙動が発生します。
参加者が増えた場合でも高いビットレートを維持したいという状況ではない限りは設定を無効にすることは推奨しません。