Peerjs: Comment appeler sans MediaStream ?

Créé le 8 janv. 2016  ·  5Commentaires  ·  Source: peers/peerjs

J'ai un cas d'utilisation où:

  • il y a deux personnes, le présentateur et le spectateur
  • Le présentateur ouvre la page et obtient un ID pair
  • Le présentateur envoie cet ID d'homologue au spectateur
  • Le spectateur utilise cet ID pair pour appeler le présentateur
  • Le présentateur envoie son écran partagé au spectateur

Pour ce cas d'utilisation, j'ai besoin, pour le côté spectateur :

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

Cela ne fonctionne pas, car peer.call(presenterPeerID, null) renvoie undefined .

Comment appeler sans envoyer de MediaStream ?

Commentaire le plus utile

Vous pouvez créer un flux vide avec n'importe quelle piste, ou avec les deux :

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);

Tous les 5 commentaires

Abonnez-vous à ce numéro

Avez-vous essayé d'initier l'appel du présentateur au spectateur, en fournissant le mediastream aux présentateurs dans l'appel et en répondant à l'appel avec null comme mediastream ?

J'espère aussi faire la même chose. Voir numéro 158

+1

Vous pouvez créer un flux vide avec n'importe quelle piste, ou avec les deux :

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);
Cette page vous a été utile?
0 / 5 - 0 notes