マルチストリーム

概要

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

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

サーバーにマルチストリームで接続するには、 Configuration オブジェクトの生成時に multistreamEnabled 引数に true を指定します。 1 つの接続で送信と受信の両方を行うのであれば、ロールに .sendrecv を指定します。

接続例:

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

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

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

既知の問題

現在、マルチストリームで映像のみの送受信を行う場合に connect シグナリングメッセージで「マルチストリーム、音声無効」を指定すると接続に失敗する現象を確認しています。 Sora iOS SDK ではこの現象を次の方法で回避しています。

  • 映像と音声の両方を有効にする

  • 送受信のストリームから音声トラックを外し、音声データを送受信しない