WebRTC 与 SIP 的结合:实时通信的融合之道
前言
随着实时通信需求的不断增长,WebRTC(Web Real-Time Communication)和 SIP(Session Initiation Protocol)已成为两个核心技术。前者以浏览器为中心,提供了点对点的音视频通信能力;后者则是电信与企业通信领域的事实标准协议,广泛应用于 IP 电话、VoIP 网关和软交换。
两者的结合不仅能打通互联网与传统电信世界,还能大大扩展业务场景,为实时通信带来更多可能性。
当然,作为互相结合的应用,首先一定是B2BUA,所以从理论上来说FreeSWITCH、Asterisk是最合适的应用,而在FreeSWITCH1.4.x即可配置sip_profiles/internal.xml中的以下:
而Asterisk则是在Asterisk11中通过pjsip和wss的结合来支持。
技术点:
以上所述只是为了描述我个人熟悉的一面,而实际上,WebRTC作为一个由 Google 发起并被 W3C/ IETF 标准化的技术,目标是在浏览器或移动端直接进行实时音视频通信,但有一点WebRTC是不具有信令能力,只能依赖于其它方式实现信令控制。
-
特性:
-
内置音视频采集与编解码(VP8/VP9/H.264、Opus、G.711 等);
-
NAT 穿透(ICE、STUN、TURN);
-
安全性(DTLS-SRTP 加密)。
-
优势:无需插件,跨平台,适合互联网应用。
-
特性:
-
灵活的会话控制(INVITE、BYE、REGISTER 等方法);
-
与电信网络兼容(支持软交换、SBC、PBX 系统);
-
配合 RTP 实现媒体传输。
-
优势:生态成熟,广泛部署,标准化程度高。
但实际上WebRTC不仅仅是只可用SIP,它可以使用的信令方式可以由以下相关方式来支撑,当然媒体层的支持还是相对到位的。
信令
1.1 WebRTC 信令的作用
-
会话建立:交换 SDP(Session Description Protocol),告知对方支持的编解码、网络地址、加密方式。
-
状态维护:通话的开始、修改、结束。
-
穿透支持:传递 ICE 候选(候选地址)以帮助 NAT/防火墙穿透。
1.2 WebRTC 常见信令协议
WebRTC 本身 不规定具体的信令协议,常见实现有:
-
SIP over WebSocket → 常见于 Asterisk、FreeSWITCH 等传统 VoIP 系统。
-
自定义 WebSocket/HTTP → 许多 WebRTC 应用(视频会议、直播)用自定义信令服务器。
-
XMPP/Socket.io → 在即时通讯平台上常见。
切记:当前的chrome体系必须要使用安全 WebSocket(wss://),后台信令服务器需配置 TLS 证书。而浏览器端通过 JavaScript createOffer() / createAnswer() 生成 SDP,信令层负责交换给对方。
媒体
2.1 WebRTC 媒体的特点
-
强制加密:所有媒体必须走 DTLS-SRTP。
-
动态编解码:常用 Opus (音频)、VP8/VP9/H.264 (视频)。
-
NAT 穿透:通过 ICE + STUN/TURN 选路,决定媒体传输路径。
2.2 关键配置点
-
编解码选择
-
浏览器默认支持
Opus、G.711(音频)和VP8/VP9/H.264(视频)。 -
服务器或对端需要在 SDP 协商时选择双方都支持的。
-
加密设置
-
使用
a=crypto或a=fingerprint交换 DTLS-SRTP 的密钥指纹。 -
确保服务端安装了
libsrtp,否则无法与浏览器建立加密会话。 -
ICE / STUN / TURN
-
STUN:获取公网映射地址,常用于 NAT 穿透。
-
TURN:作为中继服务器,在 P2P 失败时转发媒体。
4. 带宽/QoS
-
b=AS:128(限制音频带宽为 128 kbps) -
或使用
RTCRtpSender.setParameters()调整发送端码率。 -
通过 SDP 或 API 调整码率:
结合点:
两者的互补性
-
应用层目标不同
-
WebRTC:浏览器/APP 内的实时通信。
-
SIP:企业电话系统、VoIP 网络。
-
融合价值
-
WebRTC 提供“最后一公里”到用户设备的便捷接入。
-
SIP 提供与传统 VoIP/电信网络的对接能力。
-
结果
-
结合后,用户只需浏览器即可拨打 SIP 电话,或者从 SIP 终端呼叫 WebRTC 应用。
-
WebRTC与SIP的结合
1. 网关模式
-
通过 WebRTC-SIP 网关(如 FreeSWITCH、Asterisk、OpenSER(OpenSIPS/Kamailio)+RTPEngine)完成协议转换:
-
信令层:WebRTC 使用 WebSocket + SIP over WebSocket;网关转为传统 SIP over UDP/TCP/TLS。
-
媒体层:WebRTC 使用 SRTP;网关解密后转为 RTP。
2. 直接 SIP over WebSocket
-
浏览器通过 SIP.js、JsSIP 等库直接使用 WebSocket 与 SIP 服务器交互。
-
SIP 服务器需支持 WebSocket 协议。
3. 统一通信平台
-
在企业 UC 系统中嵌入 WebRTC 网页组件,用户可直接通过浏览器进入 SIP 网络。
-
常见于呼叫中心、客服系统。
应用场景
-
呼叫中心/客服系统
-
用户在网页点击呼叫 → WebRTC 建立音视频通道 → SIP 网关 → 客服 SIP 话机接听。
-
企业统一通信
-
员工可用浏览器加入 SIP 电话会议,无需安装专门的 VoIP 客户端。
-
电信运营商 WebRTC 接入
-
运营商为用户提供网页版“Web Phone”,结合 IMS 网络,实现跨设备通信。
技术挑战
-
NAT/防火墙穿透:需要合理配置 STUN/TURN。
-
编解码兼容:SIP 世界常用 G.711,而 WebRTC 默认 Opus/VP8,需要转码,所以音频建议使用G.711A(国内相关SIP应用的主流),视频使用H264,减少视频转码。
-
安全性:WebRTC 强制加密(DTLS-SRTP),SIP 则不一定。
-
QoS 保证:跨网络传输时需要优化带宽管理与抖动缓冲。
总结
WebRTC 与 SIP 的结合,本质上是 互联网实时通信与传统电信协议的融合。通过 WebRTC 网关或 SIP over WebSocket,用户能在浏览器与 SIP 网络之间实现无缝通话。这一模式不仅降低了终端使用门槛,还扩展了实时通信的应用场景:从网页呼叫中心到企业 UC,再到运营商 IMS 系统,都能看到它的身影。
未来,随着 5G 与云原生通信的发展,WebRTC 与 SIP 的结合将更加紧密,为全球实时通信提供更开放、灵活的解决方案。
切记:如果是纯粹的语音客服体系,还是那句话,当前还是建议使用sip client与业务结合,webrtc对于要求高一些的客服领域在技术上还是有挑战的,持久性、稳定性、并发性等来说,对于相关的人员要求比较高。
宁卫通信