Bắt đầu sử dụng tính năng phát trực tiếp từ xa

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