视频会议中使用SIP协议进行对接,不可避免会遇到发送和接收双流的问题,双流广义上指主流和演示流,这里讲的发送双流指的是演示流,一般用在开会时,展示PPT等内容。
这里先来讲讲SIP携带的SDP中BFCP的协商问题,部分报文如下:
主叫INVITE报文:
![132532tyd2y6jhp2oy5j2g.png]()
被叫INVITE 200 OK部分报文:
![132532enk9kh7w1cte6zhx.png]()
主叫ACK中携带的SDP部分报文如下:
![132532u3se18ozsjzpaava.png]()
BFCP客户端和服务端连接后,需要发送Hello握手报文,接收端收到报文后,回复HelloAck报文,表示BFCP握手成功,握手交互报文如下:
![132532fak1aiudngss3h5h.png]()
![132532dyuzkzy9a16e23fy.png]()
需要特别注意:客户端发送报文中的User ID、Conference ID和Floor ID字段需要携带上服务端SDP中声明的相关字段的值,否则遇到判断比较严格的厂家,BFCP客户端发送的报文,服务端会不响应或者回复拒绝的报文,携带上相关的错误原因及错误码。
BFCP申请发送演示流交互过程如下:
![132533bmz77s2k77pi2dss.png]()
BFCP服务端回复客户端演示流申请结果如下:
![132533dhhoy5i28o1dtmom.png]()
接收端接收一段演示流后,可能也想发送演示流,这时发送端还没有停止发送演示流,BFCP服务端(客户端也可以进行演示流抢占,这里不再展示)可能会进行演示流抢占,这时需要先给BFCP客户端发送演示流抢占命令,即先发送让客户端停止发送演示的命令,再发起演示的命令,具体交互报文如下:
![132533op7ajdas5f545j5z.png]()
BFCP客户端对服务端申请客户端停止演示信令响应(这里客户端回复Ack表示同意):
![132533gqrc2ocyb2e8xcxu.png]()
接着服务端发起演示,客户端回复Ack表示同意接收演示,具体报文如下:
![132533jil3s3iimyim756b.png]()
![132533xvx7cx9jj1rtejav.png]()
BFCP服务端停止演示,交互信令如下:
![132533j68hoxqgtx7eehf2.png]()
![132533bxzfjc5dfxvguwxx.png]()
BFCP客户端取消演示交互报文如下:
![132533wcmsrgmxyw1ghe45.png]()