在 EasyRTC 的部分项目中,客户希望能够开启视频级联功能,即将A服务器的视频推送到B服务器中。目前我们对这一功能进行了研究,基于freeswitch实现了EasyRTC的级联功能,下面将和大家分享一下我们的实现方式。
基本用法如下:
a用户----A服务器(192.168.99.162)------B服务器(192.168.99.147)-----b用户
a用户访问A服务器,A服务器将视频转发到B服务器,b用户访问B服务器的房间,可以看到a的视频。
首先在 A 服务器(192.168.99.162)的配置文件 conf/dialplan/default.xml 中添加以下参数,最好放在文件的前面,防止被覆盖掉,大致如下:
<extension name="meeting">
<condition field="destination_number" expression="^(.*)$">
<action application="bridge" data="sofia/external/sip:$1@192.168.99.147:15080" />
</condition>
</extension>
expression 代表所有的会议室,^1(.*)$ 就是以 1 开头的会议室。
data 中 %1 代表会议室名称。将所有的数据转发到 192.168.99.147 中。
在B服务器(192.168.99.147)配置文件 conf/displan/public.xml 中修改 public_extensions 为如下内容,代表接收所有的会议室。
<extension name="public_extensions">
<condition field="destination_number" expression="^(.*)$">
<action application="transfer" data="$1 XML default"/>
</condition>
</extension>
在a中进入会议室,会将a的视频转发到服务器B中,抓包显示如下:
以上包数据代表,192.168.99.162通过sip+rtp协议将A的视频转发到192.168.99.147的服务器中。
在147的服务其中能够看到162的服务器的视频,至此该功能就已经完成。
目前,EasyRTC可以运用到多个项目当中,包括在线教育、企业办公、在线医疗等。如果大家对我们开发的产品比较感兴趣,欢迎关注我们了解更多。