Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

226
Vistas
¿Por qué esta pista multimedia de WebRTC "finaliza" inmediatamente después de una oferta de WebRTC no utilizada?

Tengo dos compañeros que envían video a través de WebRTC. Los pares usan la negociación perfecta en paralelo, lo que significa que en algunos casos un par puede hacer una oferta y luego desecharla y usar la oferta del otro par en su lugar. Por alguna razón, cuando esto sucede, una vez que la conexión se abre de verdad y este par recibe una pista de medios, la pista ya "finaliza" inmediatamente y no se puede usar.

He simplificado esto a una reproducción mínima:

 const rtc1 = new RTCPeerConnection(); const rtc2 = new RTCPeerConnection(); rtc1.ontrack = ({ track }) => { console.log('rtc1 got track:', track.readyState); }; rtc2.ontrack = ({ track }) => { console.log('rtc2 got track:', track.readyState); }; stream = await navigator.mediaDevices.getUserMedia({ video: true }); rtc2.addTrack(stream.getTracks()[0], stream); rtc1.addTrack(stream.getTracks()[0], stream); // These two lines break everything: o = await rtc2.createOffer(); await rtc2.setLocalDescription(o); // --- o = await rtc1.createOffer(); await rtc1.setLocalDescription(o); await rtc2.setRemoteDescription(o) a = await rtc2.createAnswer(); await rtc2.setLocalDescription(a); await rtc1.setRemoteDescription(a);

Creo que esto debería configurar una conexión WebRTC con una transmisión de video SendRecv en ambas direcciones, para que imprima got track: live dos veces.

Desafortunadamente, en realidad esto imprime:

 rtc2 got track: ended rtc1 got track: live

Es decir, la pista de ontrack ya está 'terminada' cuando se activa la devolución de llamada en la pista. RTC2 nunca recibe una pista de medios de trabajo. ¿Por qué?

Estoy probando esto en el último Chrome: 100.0.4896.75.

Comentar las dos líneas marcadas arriba que crean una oferta no utilizada resuelve esto. En ese caso, ambas pistas están live como se esperaba. Sin embargo, parece que esa oferta no debería ser un problema, y con el patrón de configuración de "negociación perfecta" recomendado oficialmente (o algo similar), este tipo de ofertas no utilizadas parecen inevitables.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

De hecho, esto no debería suceder, y no sucede en Firefox.

Resulta que esto es un error en Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=1315611

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda