5月30日 00:37

什么是 WebRTC?它的核心组成部分有哪些?

WebRTC 是浏览器里的实时音视频和数据通信能力,核心价值是不用插件就能让两个端建立低延迟连接。它主要由三块组成:媒体采集用 getUserMedia 拿摄像头、麦克风;连接与协商用 RTCPeerConnection 处理 SDP、ICE、加密和媒体传输;任意数据传输用 RTCDataChannel。另外要记住:WebRTC 不自带信令服务,房间、呼叫、offer/answer 和 candidate 交换通常由业务用 WebSocket 或 HTTP 自己实现。

追问

WebRTC 是完全点对点吗?

不一定。能直连时媒体可以 P2P;直连失败会走 TURN 中继;多人会议通常还会用 SFU 转发媒体流,所以“WebRTC 等于 P2P”这个说法不准确。

RTCPeerConnection 具体负责什么?

它负责创建 offer/answer、管理 ICE 候选、建立 DTLS/SRTP 安全传输,并把本地媒体轨道发送给对端。简单说,它是 WebRTC 连接的核心对象。

信令为什么不算 WebRTC 标准的一部分?

因为不同业务的房间模型、鉴权、重连和消息格式差异很大。标准只规定浏览器如何生成 SDP 和 candidate,至于怎么传给对端,由业务决定。

getUserMedia 和 RTCDataChannel 有什么区别?

getUserMedia 采集音视频流,适合通话、录制、屏幕共享。RTCDataChannel 传任意数据,适合聊天、白板同步、文件分片或游戏状态同步。

写段代码

js
const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true }) const pc = new RTCPeerConnection({ iceServers }) stream.getTracks().forEach(track => pc.addTrack(track, stream)) const channel = pc.createDataChannel('chat')
标签:WebRTC