Peerjs: ¿Cómo llamo sin un MediaStream?

Creado en 8 ene. 2016  ·  5Comentarios  ·  Fuente: peers/peerjs

Tengo un caso de uso donde:

  • hay dos personas, presentador y espectador
  • El presentador abre la página y obtiene una ID de compañero
  • El presentador envía esa ID de compañero al espectador
  • El espectador usa esa ID de compañero para llamar al presentador
  • El presentador envía su pantalla compartida al espectador

Para este caso de uso, necesito, para el lado del Visor:

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

Esto no funciona, porque peer.call(presenterPeerID, null) devuelve undefined .

¿Cómo llamo sin enviar un MediaStream?

Comentario más útil

Puede crear una secuencia vacía con cualquier pista o con ambas:

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

Todos 5 comentarios

Suscríbete a este número

¿Ha intentado iniciar la llamada del presentador al espectador, proporcionando a los presentadores el flujo de medios en la llamada y respondiendo la llamada con nulo como flujo de medios?

Yo también espero hacer lo mismo. Ver edición #158

+1

Puede crear una secuencia vacía con cualquier pista o con ambas:

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);
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

furozen picture furozen  ·  9Comentarios

l2aelba picture l2aelba  ·  3Comentarios

nhducseuit picture nhducseuit  ·  5Comentarios

RikdeVos picture RikdeVos  ·  6Comentarios

afrokick picture afrokick  ·  5Comentarios