Começar a usar streams remotos

Quando uma RTCPeerConnection é conectada a um peer remoto, é possível transmitir áudio e vídeo entre eles. Este é o ponto em que conectamos o stream que recebemos de getUserMedia() ao RTCPeerConnection. Um stream de mídia consiste em pelo menos uma faixa de mídia, que é adicionada individualmente ao RTCPeerConnection quando queremos transmitir a mídia para o peering remoto.

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 RTCPeerConnection antes de se conectar a um peering remoto. Portanto, faz sentido configurar essa configuração o mais cedo possível em vez de esperar que a conexão seja concluída.

Adicionar faixas remotas

Para receber as faixas remotas adicionadas pelo outro par, registramos um listener na RTCPeerConnection local que detecta o evento track. O RTCTrackEvent contém uma matriz de objetos MediaStream que têm os mesmos valores de MediaStream.id que os streams locais correspondentes dos apps semelhantes. No nosso exemplo, cada faixa está associada apenas a um único stream.

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

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

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