1. WebRTC 与 SIP 的结合:实时通信的融合之道:
  2. 宁卫通信
  3. 新闻动态
  4. 宁卫新闻
  5. WebRTC 与 SIP 的结合:实时通信的融合之道

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 加密)。

  • 优势:无需插件,跨平台,适合互联网应用。

     而SIP 是一种信令协议,主要用于建立、修改和终止会话(如语音、视频、即时消息)。
  • 特性

    • 灵活的会话控制(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 关键配置点

  1. 编解码选择

    • 浏览器默认支持 OpusG.711(音频)和 VP8/VP9/H.264(视频)。

    • 服务器或对端需要在 SDP 协商时选择双方都支持的。

  2. 加密设置

    • 使用 a=crypto 或 a=fingerprint 交换 DTLS-SRTP 的密钥指纹。

    • 确保服务端安装了 libsrtp,否则无法与浏览器建立加密会话。

  3. ICE / STUN / TURN

    • STUN:获取公网映射地址,常用于 NAT 穿透。

    • TURN:作为中继服务器,在 P2P 失败时转发媒体。

4. 带宽/QoS

    • b=AS:128(限制音频带宽为 128 kbps)

    • 或使用 RTCRtpSender.setParameters() 调整发送端码率。

    • 通过 SDP 或 API 调整码率:




结合点:


      虽然我们前边论述了,WebRTC在协议中可选择很多,但是作为通用性的应用来说,还是建议使用SIP协议来作为WebRTC的信令辅助,它们的结合点为以下:

两者的互补性


  1. 应用层目标不同

    • WebRTC:浏览器/APP 内的实时通信。

    • SIP:企业电话系统、VoIP 网络。

  2. 融合价值

    • WebRTC 提供“最后一公里”到用户设备的便捷接入。

    • SIP 提供与传统 VoIP/电信网络的对接能力。

  3. 结果

    • 结合后,用户只需浏览器即可拨打 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 网络。

  • 常见于呼叫中心、客服系统。


应用场景


  1. 呼叫中心/客服系统

    • 用户在网页点击呼叫 → WebRTC 建立音视频通道 → SIP 网关 → 客服 SIP 话机接听。

  2. 企业统一通信

    • 员工可用浏览器加入 SIP 电话会议,无需安装专门的 VoIP 客户端。

  3. 电信运营商 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对于要求高一些的客服领域在技术上还是有挑战的,持久性、稳定性、并发性等来说,对于相关的人员要求比较高。