

XSwitch 视频会议本身是一个 MCU,普通的参会终端通常只收发一路视频流。通过支持 BFCP 双流协议,终端最多可以支持两路视频流:一路是摄像头视频,另一路是桌面共享或其他演示内容。MCU 负责融屏、混音等处理,将多路视频流合成统一的画面供参会者观看。

BFCP(Binary Floor Control Protocol,二进制 Floor 控制协议)是一种用于管理多媒体会议中共享资源(如屏幕共享、白板等)的协议。在 XSwitch 视频会议 MCU 中,BFCP 协议主要用于实现桌面共享(双流)功能,允许会议中的参与者发起或者接收共享流。
XSwitch 视频会议简介
XSwitch 会议中的视频处理支持多种模式(video-mode):passthrough、transcode 和 mux,这里只介绍 mux 也就是融屏模式。
XSwitch 支持各种参会者布局,布局的设置一般有两种方式,单一布局或者组布局,并且布局非常灵活,你可以随时定制自己想要的布局样式。
单一布局比如:1x1,2x2,3x3 等等,设置后不管参会有多少人,布局固定不变。
组布局就是把一堆布局配置到一个 group 中,会议进行中会实时根据人数自动选择合适的布局。
XSwitch 同时支持多画布,你可以把不同的人放到不同的画布上,并且可以随时切换想看的画布。
BFCP
这里不对 BFCP 协议进行具体的阐述,具体可以参考 RFC 文档,我们主要介绍实际的使用。
BFCP 在 SDP 中作为 application 描述,举例:
v=0
o=- 1767164465 1767164466 IN IP4 192.168.3.103
s=MRD=MRE MRC-V=1.0.1
c=IN IP4 192.168.3.103
b=AS:1024
t=0 0
a=sendrecv
a=vnd.polycom.MBA.p2p:v=1.0.1
m=audio 3230 RTP/AVP 0 119 8
a=sendrecv
a=rtpmap:0 PCMU/8000
a=rtpmap:119 telephone-event/8000
a=fmtp:119 0-15
a=rtpmap:8 PCMA/8000
m=video 3232 RTP/AVP 111 109
a=sendrecv
a=content:main
a=label:1
a=rtcp-fb:* nack pli
a=rtcp-fb:* ccm fir
a=rtcp-fb:* ccm tmmbr
a=rtpmap:111 H264/90000
a=fmtp:111 profile-level-id=64001f; packetization-mode=1; max-br=20010; sar=13
a=rtpmap:109 H264/90000
a=fmtp:109 profile-level-id=42801f; max-br=20010; sar=13
m=application 3238 UDP/BFCP *
a=sendrecv
a=floorctrl:c-only
a=floorid:1 mstrm:3
a=setup:active
a=connection:new
m=application 0 RTP/AVP 100
a=sendrecv
a=rtpmap:100 H224/4800
m=video 3234 RTP/AVP 111 109 110
a=sendrecv
a=content:slides
a=label:3
a=rtcp-fb:* nack pli
a=rtcp-fb:* ccm fir
a=rtcp-fb:* ccm tmmbr
a=rtpmap:111 H264/90000
a=fmtp:111 profile-level-id=64001f; packetization-mode=1; max-mbps=122500; max-fs=8192; max-br=20010; sar=13
a=vnd.polycom.avcplus.p2p:111 max-temp-layer-p2p=3
a=rtpmap:109 H264/90000
a=fmtp:109 profile-level-id=42801f; max-mbps=122500; max-fs=8192; max-br=20010; sar=13目前 XSwitch BFCP 仅支持 UDP,并且只支持 s-only,除了要协商端口,XSwitch 还要为每个终端分配唯一的 confid,后续用于区分 BFCP 消息。
SDP 协商过程中,第二个 video 描述可以在 INVITE 阶段完成,也可以在 re-INVITE 阶段进行协商,有些设备可能会在发起共享的时候才会协商。
在 XSwitch 内部主辅流会被作为两个 channel,进行相同的路由,会议中会有两个成员,可以单独进行控制。
SIP 协商完毕后,后续开关共享以及状态通知均通过 BFCP 消息完成。
其中需要关心的 BFCP 消息包括:
会控
BFCP 中辅流在会议中作为单独的成员,可以更灵活的进行会议控制。
默认情况下所有的会议成员看到的画面是一致,如果开启了多画布,有人共享时,我们可以把共享的画面放到单独的画布上,这样支持双流的设备主流可以观看宫格的画布,辅流可以观看共享的画布,设备接两个屏幕的话既可以看到宫格又不影响观看共享画面。
XSwitch 还可以控制成员单看某个成员的画面,这样也能做到主辅流显示不同的内容。

总结
BFCP 协议在 XSwitch 视频会议 MCU 中的应用,为系统提供了强大的双流处理能力,特别是在与传统视频会议设备的互操作性方面。通过实现完整的 BFCP 协议栈,XSwitch 能够更好地支持企业级视频会议需求,提供更丰富的协作功能。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!