You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

B2BUA服务器如何通过PJSUA2发送自定义SDP的re-INVITE实现媒体直连?

关于PJSUA2 B2BUA实现媒体旁路的方案

完全可行,PJSUA2并不要求始终接管媒体流,你可以通过携带双方原始SDP的re-INVITE实现媒体旁路,让通话双方直接互通。具体实现步骤如下:

核心操作步骤

  • 保存双方原始远端SDP:在B2BUA分别与主叫、被叫建立会话的过程中,完整保存双方发送的远端SDP(即主叫发给B2BUA的SDP,以及被叫发给B2BUA的SDP),包括所有媒体地址、端口、ICE候选、编码参数等信息,不要做任何修改。
  • 构造re-INVITE的自定义SDP:
    • 向主叫发起re-INVITE时,使用被叫的原始远端SDP作为本次邀请的SDP内容;
    • 向被叫发起re-INVITE时,使用主叫的原始远端SDP作为本次邀请的SDP内容。
  • 通过PJSUA2发送带自定义SDP的re-INVITE:
    1. 创建CallOpParam对象,设置opt.sendUpdate = true以发起更新请求;
    2. 将预先保存的目标SDP赋值给CallOpParam的sdp字段,例如:param.sdp = savedPeerSdp;
    3. 调用Call::invite(param)方法发起re-INVITE,完成SDP的传递。

关键注意事项

  • ICE候选完整性:如果通话使用ICE协议,必须确保SDP中保留对方的原始ICE候选,不要替换为B2BUA的地址,这样双方才能直接完成ICE协商,建立点对点连接。
  • 媒体参数一致性:确认主叫和被叫的媒体编码、时钟速率等参数完全匹配,若初始中继时B2BUA做了编码转换,切换前需保证双方支持共同的编码集,否则直接互通会失败。
  • 异常回退逻辑:若re-INVITE被对方拒绝或协商失败,要立即恢复B2BUA的媒体中继功能,避免通话中断。

内容的提问来源于stack exchange,提问作者Gavin Murphy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:42:51