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;
});