

XSwitch 本身是一个 MCU,普通的参会终端都只收发一路视频流,有些设备支持 SIP BFCP 或 H.323、H.239 双流协议,最多可以支持两路视频流。MCU 的功能主要负责融屏、混音等。端侧看到的视频画面一般是相同的,声音则是减掉自己的,当然 XSwitch 也支持 personal canvas,每个终端可以不看自己的画面,这会为每个终端启用一个编码器,服务器资源消耗比较多。

声网本身是一个 SFU,每个参会终端可以上行一路视频流(共享时也可以上行多路流),而下行会有多路视频流。终端可以选择订阅哪些成员的音视频流,并且可以灵活调整本地布局。

架构
通过将声网的 Linux SDK 集成到 XSwitch 中,XSwitch 便拥有了与声网网络的通信能力。
SIP 侧呼入 XSwitch MCU,每路 SIP 都会通过 Linux SDK 加入到 SFU,这样在声网 RTC 侧来看,SIP 侧也是 SFU 方式入会。
同时 XSwitch 会选择一个 SIP 终端去订阅频道内所有 RTC 的音视频流,并且为每一个订阅到 RTC 创建 XSwitch session,并把该 RTC 路由到同一个 conference 中,这样对 XSwitch MCU 来说 RTC 跟 SIP 是一样的。

对接
开通声网服务
注册并登录声网控制台,创建一个声网项目,这样你会获取到一个 APP ID,后续对接需要,具体可以参考:
https://doc.shengwang.cn/doc/rtc-server-sdk/cpp/get-started/enable-service
XSwitch 配置
打开 XSwitch 后台配置界面,为 SIP 创建路由(已经有会议相关的路由则可以只添加动作),参考:

为了简单测试,目的地可以选择指定会议室或者同号码会议室,这样 SIP 呼入就可以加入到 MCU 中。
动作里的 agora_mcu 比较关键,这是一个 APP,可以把 SIP 加入到声网的 channel 中。参数依次为 <appid> <token|NULL> <channel> [uid] [conference-name]
NULL 即可。agora_conference_name 来指定该字段,该字段是为 RTC 路由用的。这里需要说明一下,动作里 APP 会优先执行,才会执行路由目的地的动作,conference 是一个阻塞的 APP,如果自己添加系统路由,要保证先执行 agora_mcu 再执行 conference,否则后续的 APP 会被 conference APP 阻塞掉。
RTC 侧的所有的成员都会进入路由,其中被叫号码为上文的 conference-name,直接路由到与 SIP 相同的会议室中即可,目的地可以选择系统,添加如下即可:
conference ${destination_number}以上场景均针对的是多人会议的场景,如果想一对一呼叫(1路 SIP 一路 RTC),则可以直接执行 bridge,参考:
bridge {agora_token=xxx,uid=xxx}agora/appid/channel/auto_answer其中 agora_token 为声网 token,uid 为声网 uid,auto_answer 会默认应答 RTC 那条腿。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!