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 传任意数据,适合聊天、白板同步、文件分片或游戏状态同步。
写段代码
jsconst 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')