¿Es posible implementar transmisión en vivo interactiva utilizando WebRTC JS?
// Crear transmisión de video local
navigator.mediaDevices.getUserMedia({ video: true, audio: true }) p>
.then(function( secuencia) {
var localVideo = document.getElementById('localVideo');
localVideo.srcObject = secuencia;
})
.catch( function(error) {
console.log('Error al acceder a dispositivos multimedia: ' + error.message);
});
//Crear objeto PeerConnection y conexión de socket
var pc = new RTCPeerConnection();
var socket = io() ;
//Escuche los eventos de los candidatos de ICE para enviárselos entre sí
pc.onicecandate = function(event) {
if (event.candidate) {
p>
socket.emit('iceCandidate', event.candidate);
}
};
// Escuche el evento de transmisión de video remoto para mostrar en la página
c.ontrack = function(event) {
if ( event.ontrack = function(event) {
var remoteVideo = document.getElementById('remoteVideo');
if (!remoteVideo.srcObject) {
remoteVideo.streams[0];
}
};
// Crea una oferta y envíala a la otra parte
pc.createOffer()
.then(function (oferta) {
return pc.setLocalDescription(oferta);
})
.then(function() {
socket .emit('oferta ', pc.localDescription);
})
.catch(function(error) {
console.log('Creación de error oferta: ' + error .message);
});
//Escuche los eventos de socket y procese la oferta y los candidatos ICE de cada uno
socket.on ('oferta ', función(oferta) {
pc.setRemoteDescription(error) {
//c.setRemoteDescription(error) {
//c .setRemo
teDescription(error)setRemoteDescription(oferta)
.then(function() {
return navigator. mediaDevices.getUserMedia({ video: true, audio: true });
})
.then(function(stream) {
stream.getTracks().forEach( function(track) {
pc. addTrack(pista, transmisión);
});
})
.then(function() {
return pc. createAnswer();
})
.then(function(respuesta) {
return pc.setLocalDescription(respuesta);
})
.then(function() {
socket.emit(' respuesta', pc.localDescription);
})
.catch(function(error) {
console.log('Error al responder: ' + error.message);
});
} );
socket.on('respuesta', función(respuesta) {
pc.setRemoteDescription(respuesta)
.catch(función(error) {
console.log('Error al configurar la descripción remota: ' + error.message);
});
});
socket.on('iceCandidate', function(candidato) {
pc.addIceCandidate(candidato)
.catch(function(error) {
consola .log('Error al agregar candidato ICE: ' + error.message);<
});
});
donde `localVideo` y ` remoteVideo` es el elemento de etiqueta \