Peerjs: MediaStreamなしで呼び出すにはどうすればよいですか?

作成日 2016年01月08日  ·  5コメント  ·  ソース: peers/peerjs

次のようなユースケースがあります。

  • プレゼンターとビューアーの2人がいます
  • プレゼンターがページを開き、ピアIDを取得します
  • プレゼンターはそのピアIDをビューアーに送信します
  • ViewerはそのピアIDを使用してPresenterを呼び出します
  • プレゼンターは共有画面をビューアに送信します

このユースケースでは、ビューア側で次のことが必要です。

var call = peer.call(presenterPeerID, null);
call.on('stream', function(theirWebcamStream) {
  showWebcamStream(theirWebcamStream);
});

peer.call(presenterPeerID, null)undefined $を返すため、これは機能しません。

MediaStreamを送信せずに電話をかけるにはどうすればよいですか?

最も参考になるコメント

空のストリームは、任意のトラック、またはその両方で作成できます。

export const createEmptyAudioTrack = () => {
  const ctx = new AudioContext();
  const oscillator = ctx.createOscillator();
  const dst = oscillator.connect(ctx.createMediaStreamDestination());
  oscillator.start();
  const track = dst.stream.getAudioTracks()[0];
  return Object.assign(track, { enabled: false });
};

export const createEmptyVideoTrack = ({ width, height }) => {
  const canvas = Object.assign(document.createElement('canvas'), { width, height });
  canvas.getContext('2d').fillRect(0, 0, width, height);

  const stream = canvas.captureStream();
  const track = stream.getVideoTracks()[0];

  return Object.assign(track, { enabled: false });
};

...

const audioTrack = createEmptyAudioTrack();
const videoTrack = createEmptyVideoTrack({ width:640, height:480 });
const mediaStream = new MediaStream([audioTrack, videoTrack]);

peer.call('id', mediaStream);

全てのコメント5件

この号を購読する

プレゼンターから視聴者への通話を開始し、通話でプレゼンターにメディアストリームを提供し、メディアストリームとしてnullを使用して通話に応答しようとしましたか?

私も同じことをしたいと思っています。 問題#158を参照してください

+1

空のストリームは、任意のトラック、またはその両方で作成できます。

export const createEmptyAudioTrack = () => {
  const ctx = new AudioContext();
  const oscillator = ctx.createOscillator();
  const dst = oscillator.connect(ctx.createMediaStreamDestination());
  oscillator.start();
  const track = dst.stream.getAudioTracks()[0];
  return Object.assign(track, { enabled: false });
};

export const createEmptyVideoTrack = ({ width, height }) => {
  const canvas = Object.assign(document.createElement('canvas'), { width, height });
  canvas.getContext('2d').fillRect(0, 0, width, height);

  const stream = canvas.captureStream();
  const track = stream.getVideoTracks()[0];

  return Object.assign(track, { enabled: false });
};

...

const audioTrack = createEmptyAudioTrack();
const videoTrack = createEmptyVideoTrack({ width:640, height:480 });
const mediaStream = new MediaStream([audioTrack, videoTrack]);

peer.call('id', mediaStream);
このページは役に立ちましたか?
0 / 5 - 0 評価