マルチストリーム

概要

マルチストリームとは、一つのピア接続で複数のストリームを管理する機能です。 詳しくは Sora ドキュメント を参照してください。

マルチストリームを使用する

サーバーにマルチストリームで接続するには次のロールを指定します。

  • グループ (パブリッシャー) .group : 送信と受信の両方を行います。
  • グループ (サブスクライバー) .groupSub : 受信のみ行います。端末の映像は送信されません。

マルチストリームの接続例:

let config = Configuration(url: url, channelId: channelId, role: .group)
Sora.shared.connect(configuration: config) {
    ...
}

マルチストリームで接続すると、同一のチャネル ID に接続されているすべてのストリームが MediaChannel に追加されます。 同一のチャネル ID のストリームが増減すると MediaChannel が保持するストリームも増減します。 ストリームが追加されると MediaChannel のイベントハンドラ MediaChannelHandlers.onAddStreamHandler が、削除されると onRemoveStreamHandler が呼ばれます。

映像を描画するには、各ストリームにそれぞれ VideoRenderer をセットします。 イベントハンドラを利用して映像ビューを用意するとよいでしょう。

既知の問題

現在、マルチストリームで映像のみの送受信を行う場合に connect シグナリングメッセージで「マルチストリーム、音声無効」を指定すると接続に失敗する現象を確認しています。そのため、 .groupSub ロールと audioEnabled = false の組み合わせでは次の方法で回避しています。

  • 映像と音声の両方を有効にする
  • 送受信のストリームから音声トラックを外し、音声データを送受信しない