Как только 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
прослушивающий событие track
. RTCTrackEvent
содержит массив объектов MediaStream
, которые имеют те же значения MediaStream.id
что и соответствующие локальные потоки однорангового узла. В нашем примере каждая дорожка связана только с одним потоком.
Обратите внимание: хотя идентификаторы MediaStream
совпадают на обеих сторонах однорангового соединения, это обычно не относится к идентификаторам MediaStreamTrack
.
const remoteVideo = document.querySelector('#remoteVideo');
peerConnection.addEventListener('track', async (event) => {
const [remoteStream] = event.streams;
remoteVideo.srcObject = remoteStream;
});
, Как только 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
прослушивающий событие track
. RTCTrackEvent
содержит массив объектов MediaStream
, которые имеют те же значения MediaStream.id
что и соответствующие локальные потоки однорангового узла. В нашем примере каждая дорожка связана только с одним потоком.
Обратите внимание: хотя идентификаторы MediaStream
совпадают на обеих сторонах однорангового соединения, это обычно не относится к идентификаторам MediaStreamTrack
.
const remoteVideo = document.querySelector('#remoteVideo');
peerConnection.addEventListener('track', async (event) => {
const [remoteStream] = event.streams;
remoteVideo.srcObject = remoteStream;
});