HTML5 词条目录
前端Wiki/词条/WebRTC 音视频通信

WebRTC 音视频通信

定义在浏览器间直接建立点对点音视频与数据通道,无需中间服务器转发

WebRTC 的三块拼图:MediaDevices(getUserMedia 拿摄像头与麦克风权限)、RTCPeerConnection(建立点对点连接、协商编解码与传输)、RTCDataChannel(传任意数据)。两个浏览器要连通还需要信令服务器交换 SDP 描述与 ICE 候选,之后媒体流即可直连不再经过服务端。

一对一通话上手容易:双方交换 offer 与 answer 完成协商,STUN 服务器帮忙发现自己公网地址。多人会议则要引入 SFU 转发服务器降低上行带宽。实际项目极少从零写底层,多基于 mediasoup、LiveKit 等开源方案封装。调试时可用 chrome://webrtc-internals 观察连接状态。

JavaScript
// 打开摄像头并预览(最简演示,不含连接协商)
var video = document.createElement('video');
video.autoplay = true; video.muted = true;
document.body.appendChild(video);

if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
  navigator.mediaDevices.getUserMedia({ video: true, audio: false })
    .then(function (stream) {
      video.srcObject = stream;
      console.log('摄像头已打开,视频轨数量:', stream.getVideoTracks().length);
    })
    .catch(function (err) {
      console.log('无法访问摄像头:', err.name === 'NotAllowedError' ? '用户拒绝授权' : err.message);
    });
} else {
  console.log('当前浏览器不支持 WebRTC');
}
⚠ 常见误区
🔗 相关词条浏览器文件读取
← 返回来源章节浏览器