Sau khi RTCPeerConnection
kết nối với một máy tính từ xa, bạn có thể truyền trực tuyến âm thanh và video giữa các máy tính đó. Đây là điểm kết nối luồng dữ liệu nhận được từ getUserMedia()
với RTCPeerConnection
. Một luồng nội dung đa phương tiện bao gồm ít nhất một kênh nội dung đa phương tiện và các kênh này được thêm riêng vào RTCPeerConnection
khi chúng ta muốn truyền nội dung đa phương tiện đến máy chủ đồng cấp từ xa.
const localStream = await getUserMedia({video: true, audio: true});
const peerConnection = new RTCPeerConnection(iceConfig);
localStream.getTracks().forEach(track => {
peerConnection.addTrack(track, localStream);
});
Bạn có thể thêm các kênh vào RTCPeerConnection
trước khi kết nối với một máy chủ đồng cấp từ xa. Vì vậy, bạn nên thực hiện việc thiết lập này càng sớm càng tốt thay vì chờ kết nối hoàn tất.
Thêm kênh từ xa
Để nhận các bản nhạc từ xa do máy tính khác thêm vào, chúng ta đăng ký một trình nghe trên RTCPeerConnection
cục bộ để theo dõi sự kiện track
. RTCTrackEvent
chứa một mảng các đối tượng MediaStream
có cùng giá trị MediaStream.id
với luồng cục bộ tương ứng của máy ngang hàng. Trong ví dụ của chúng ta, mỗi kênh chỉ được liên kết với một luồng.
Xin lưu ý rằng mặc dù mã MediaStream
khớp ở cả hai bên của kết nối ngang hàng, nhưng mã MediaStreamTrack
thường không khớp.
const remoteVideo = document.querySelector('#remoteVideo');
peerConnection.addEventListener('track', async (event) => {
const [remoteStream] = event.streams;
remoteVideo.srcObject = remoteStream;
});