開始使用遠端串流

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