RTCPeerConnection
連線至遠端對等端後,即可在兩者之間串流音訊和視訊。這就是我們將從 getUserMedia()
收到的串流連結至 RTCPeerConnection
的時間點。媒體串流至少包含一個媒體音軌,當我們要將媒體傳輸至遠端對等端時,會將這些音軌個別新增至 RTCPeerConnection
。
const localStream = await getUserMedia({video: true, audio: true});
const peerConnection = new RTCPeerConnection(iceConfig);
localStream.getTracks().forEach(track => {
peerConnection.addTrack(track, localStream);
});
您可以在 RTCPeerConnection
連線至遠端對等端之前,先將曲目新增至 RTCPeerConnection
,因此建議盡早執行這項設定,而不要等待連線完成。
新增遠端音軌
為了接收其他對等端新增的遠端音軌,我們會在本機 RTCPeerConnection
上註冊事件監聽器,監聽 track
事件。RTCTrackEvent
包含 MediaStream
物件的陣列,這些物件的 MediaStream.id
值與對等端的對應本機串流相同。在本例中,每個音軌只與單一串流相關聯。
請注意,雖然 MediaStream
ID 會在對等端連線的兩端相符,但 MediaStreamTrack
ID 通常不會。
const remoteVideo = document.querySelector('#remoteVideo');
peerConnection.addEventListener('track', async (event) => {
const [remoteStream] = event.streams;
remoteVideo.srcObject = remoteStream;
});