マルチストリーム

概要

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

Sora JavaScript SDK におけるマルチストリームの扱い

Sora サーバーにマルチストリームで接続するには、オプションに multistream: true をセットしてから接続します。

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

var debug = false;
var sora = Sora.connection('ws://192.168.0.2:5000/signaling', debug);
var sendrecv = sora.sendrecv('Sora', '', {multistream: true});

navigator.mediaDevices.getUserMedia({audio: true, video: true})
  .then(mediaStream => sendrecv.connect(mediaStream))
  .catch(e => {
    console.error(e);
  });

マルチストリームで接続した Sendrecv オブジェクトは接続したメディアチャネル ID に MediaStream が追加、削除されるとイベントハンドラが呼ばれます。イベントハンドラを利用して追加、削除された MediaStream を処理します。

マルチストリームイベントハンドラ:

sendrecv.on('track', function(event) {
  var stream = event.streams[0];
  var remoteVideos = document.querySelector('#remote-videos');
  var remoteVideoId = 'sendrecv-remote-video-' + event.stream.id;
  if (!remoteVideos.querySelector('#' + remoteVideoId)) {
    var remoteVideo = document.createElement('video');
    remoteVideo.id = remoteVideoId;
    remoteVideo.autoplay = true;
    remoteVideo.srcObject = stream;
    remoteVideos.appendChild(remoteVideo);
  }
});

sendrecv.on('removetrack', function(event) {
  var remoteVideoId = 'sendrecv-remote-video-' + event.target.id;
  var remoteVideo = document.querySelector('#' + remoteVideoId);
  var remoteVideos = document.querySelector('#remote-videos');
  remoteVideos.removeChild(remoteVideo);
});

Sendonly オブジェクトでは配信中の Sendrecv Multistream 接続を視聴することが可能です。