Começar a usar streams remotos

Quando um RTCPeerConnection é conectado a um peer remoto, é possível fazer streaming de áudio e vídeo entre eles. É aqui que conectamos stream que recebemos de getUserMedia() para RTCPeerConnection. Uma mídia transmissão consiste em pelo menos uma faixa de mídia, adicionada individualmente para o RTCPeerConnection quando quisermos transmitir a mídia para o controle remoto peering.

const localStream = await getUserMedia({video: true, audio: true});
const peerConnection = new RTCPeerConnection(iceConfig);
localStream.getTracks().forEach(track => {
    peerConnection.addTrack(track, localStream);
});

As faixas podem ser adicionadas a um dispositivo RTCPeerConnection antes que ele seja conectado a um controle remoto Por isso, faz sentido realizar essa configuração o mais cedo possível, em vez de aguardando a conclusão da conexão.

Adicionando faixas remotas

Para receber as faixas remotas que foram adicionadas pelo outro peer, registramos um listener no RTCPeerConnection local para ouvir o evento track. A RTCTrackEvent contém uma matriz de objetos MediaStream com o mesmo MediaStream.id como os streams locais correspondentes do app semelhante. Em nossa exemplo, cada faixa é associada a apenas um fluxo.

Embora os IDs MediaStream correspondam nos dois lados da conexão de peering, o mesmo geralmente não é verdade para IDs MediaStreamTrack.

const remoteVideo = document.querySelector('#remoteVideo');

peerConnection.addEventListener('track', async (event) => {
    const [remoteStream] = event.streams;
    remoteVideo.srcObject = remoteStream;
});