视频会议中使用SIP协议进行对接,不可避免会遇到发送和接收双流的问题,双流广义上指主流和演示流,这里讲的发送双流指的是演示流,一般用在开会时,展示PPT等内容。
这里先来讲讲SIP携带的SDP中BFCP的协商问题,部分报文如下:
主叫INVITE报文:

被叫INVITE 200 OK部分报文:

主叫ACK中携带的SDP部分报文如下:

BFCP客户端和服务端连接后,需要发送Hello握手报文,接收端收到报文后,回复HelloAck报文,表示BFCP握手成功,握手交互报文如下:


需要特别注意:客户端发送报文中的User ID、Conference ID和Floor ID字段需要携带上服务端SDP中声明的相关字段的值,否则遇到判断比较严格的厂家,BFCP客户端发送的报文,服务端会不响应或者回复拒绝的报文,携带上相关的错误原因及错误码。
BFCP申请发送演示流交互过程如下:

BFCP服务端回复客户端演示流申请结果如下:

接收端接收一段演示流后,可能也想发送演示流,这时发送端还没有停止发送演示流,BFCP服务端(客户端也可以进行演示流抢占,这里不再展示)可能会进行演示流抢占,这时需要先给BFCP客户端发送演示流抢占命令,即先发送让客户端停止发送演示的命令,再发起演示的命令,具体交互报文如下:

BFCP客户端对服务端申请客户端停止演示信令响应(这里客户端回复Ack表示同意):

接着服务端发起演示,客户端回复Ack表示同意接收演示,具体报文如下:


BFCP服务端停止演示,交互信令如下:


BFCP客户端取消演示交互报文如下:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了