home example javascript webrtc

javascript - example - webrtc video stream



WebRTC: ¿Cómo agregar una transmisión después de una oferta y una respuesta? (3)

Estoy trabajando en videollamadas webRTC. Tengo el canal de datos implementado con éxito. Ahora me gustaría agregar un flujo de video a la misma conexión de igual a igual.

He leído que la secuencia debe agregarse antes de responder y ofrecer. ¿Hay una manera de agregar secuencia después de la respuesta o la oferta?

En caso de que haya agregado stream antes de ofrecer o responder, ¿cómo podría detener la transmisión y volver a iniciarla cuando sea necesario?

¿Podría haber algún problema para mantener tantas corrientes?


En mi experiencia, lo que Konga Raju aconsejó no funcionó. No pude enviar una "oferta actualizada" y hacer que la transmisión de video realmente suceda.

Descubrí que esta secuencia de eventos funciona para mi caso, en el cual deseo transmitir video de igual a igual 2.

  1. configurar de alguna manera para que los compañeros intercambien mensajes. (Lamentablemente, la diferencia en cómo las personas logran esto es lo que hace que diferentes ejemplos de códigos de WebRTC sean inconmensurables).
  2. En cada lado, configure los manejadores para los eventos de señalización importantes. (Algunas personas han informado que necesitas crear estos controladores en momentos especiales, pero no he encontrado que ese sea el caso). Hay 3 eventos básicos:
    • un candidato de hielo enviado desde el otro lado ==> llame a addIceCandidate con él
    • un mensaje de oferta ==> SetRemoteDescription y haga una respuesta y envíelo
    • un mensaje de respuesta ===> SetRemoteDescription
  3. En cada lado, cree el objeto peerconnection con los controladores de eventos que nos interesan: onicecandidate, onremovestream, onaddstream, etc.
    • el candidato de hielo sale del objeto de conexión ===> lo envía al otro lado
  4. Cuando ambos pares están presentes y todos los manejadores están en su lugar, peer 1 recibe un mensaje de activación de algún tipo para iniciar la captura de video (la llamada getUserMedia )
  5. Una vez que getUserMedia tenga éxito, tenemos una transmisión. Llame a addStream en el objeto de conexión de igual a igual.
  6. Entonces el compañero 1 hace una oferta.
  7. Debido a los controladores que configuramos anteriormente, Peer 2 envía una respuesta
  8. Al mismo tiempo que esto (y de forma bastante opaca), el objeto de conexión entre iguales comienza a producir candidatos de hielo. Se envían de un lado a otro entre los dos compañeros y se manejan (pasos 2 y 3 anteriores)
  9. La transmisión comienza por sí misma, de manera opaca, como resultado de 2 condiciones:
    • intercambio de oferta / respuesta
    • Candidatos de hielo recibidos, intercambiados y manejados.

No he encontrado una manera de agregar video después del paso 9. Cuando quiero cambiar algo, vuelvo al paso 3.


MediaStream debe agregarse a peerconnection primero solo luego el intercambio de oferta, la respuesta, los candidatos deben hacerse. Si se llama a onAddStream (), eso significa que está recibiendo el video remoto.


Para agregar una secuencia después de crear una señalización completa, la conexión de Peer debe renegociarse con una secuencia.

pc1.addstream(stream)

Luego, una vez más, crea una oferta y envíala a otro Peer.

El par remoto agregará la secuencia y enviará la respuesta SDP.

Para detener corrientes:

stream.stop(); pc1.removeStream(stream);