首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >BFCP 在 XSwitch 会议中的应用

BFCP 在 XSwitch 会议中的应用

作者头像
杜金房
发布2026-06-15 16:53:39
发布2026-06-15 16:53:39
1050
举报

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 描述,举例:

代码语言:javascript
复制
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 消息包括:

  • Hello:除了协商各自支持 PRIMITIVES 外,还可以作为心跳 NAT 穿透用,防止 XSwitch 主动发送的 BFCP 消息无法到达终端。
  • FloorRequest:客户端发起共享会发送该消息给服务侧,可以完成切换布局等操作。
  • FloorRelease:客户端关闭共享。
  • FloorStatus:XSwitch 会通过该消息通知终端开始(granted)或者停止(released)辅流显示,否则终端不会显示第二路视频。
  • FloorRequestStatus:XSwitch 主动关闭端侧的共享(revoked),一般用于共享抢占。

会控

BFCP 中辅流在会议中作为单独的成员,可以更灵活的进行会议控制。

默认情况下所有的会议成员看到的画面是一致,如果开启了多画布,有人共享时,我们可以把共享的画面放到单独的画布上,这样支持双流的设备主流可以观看宫格的画布,辅流可以观看共享的画布,设备接两个屏幕的话既可以看到宫格又不影响观看共享画面。

XSwitch 还可以控制成员单看某个成员的画面,这样也能做到主辅流显示不同的内容。

总结

BFCP 协议在 XSwitch 视频会议 MCU 中的应用,为系统提供了强大的双流处理能力,特别是在与传统视频会议设备的互操作性方面。通过实现完整的 BFCP 协议栈,XSwitch 能够更好地支持企业级视频会议需求,提供更丰富的协作功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档