MediaStream (aka getUserMedia) RTCPeerConnection RTCDataChannel MediaStream 特性 表示一段包含了视频/音频的媒体流 拥有多个媒体轨道 可通过navigator.getUserMedia()获取 图解 代码示例 navigator .mediaDevices .getUserMedia({ audio: true, video: true, }) .then((stream) => { videoEl.srcObject = stream }) .catch((err) => console.error(err.message)) RTCPeerConnection 建立p2p连接管道,用作传输媒体数据 特性 信令处理 编解码 p2p通信 安全 带宽管理 … 图解 代码示例 pc = new RTCPeerConnection(null); pc.ontrack = gotRemoteStream; pc.addStream(localStream); pc.createOffer(gotOffer); function gotOffer(desc) { pc.setLocalDescription(desc); sendOffer(desc); } function gotAnswer(desc) { pc.setRemoteDescription(desc); } function gotRemoteStream(e) { attachMediaStream(remoteVideo, e.streams[0); } RTCDataChannel 可以让您在两个对等体之间打开一个通道,您可以通过该通道发送和接收任意数据。 特性 类似WebSockets 超低延迟 加密 代码示例 var pc = new RTCPeerConnection(); pc.ondatachannel = function(event) { receiveChannel = event.channel; receiveChannel.onmessage = function(event){ document.querySelector("div#receive").innerHTML = event.data; }; }; sendChannel = pc.createDataChannel("sendDataChannel", {reliable: false}); document.querySelector("button#send").onclick = function (){ var data = document.querySelector("textarea#send").value; sendChannel.send(data); }; 扩展阅读 WebRTC 教程-阮一峰 Navigator 对象,Screen 对象