标准SIP发送双流BFCP协议报文分析(包括SDP中BFCP描述,BFCP客户端和服务端分别发送演示,以及演示流抢占等)
做过视频会议的同学,如果使用的是标准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客户端取消演示交互报文如下:
做过视频会议的同学都知道,在开视频会议的时候,往往需要共享PPT等内容,而且一般展示PPT是在演示流通道中发送的(音频,主流视频,演示流视频)。如果使用标准SIP进行对接,有些厂家不支持演示流信令BFCP,这时他们在发送演示流时,会将演示流在主流通道中发送,不同的厂家实现方式不同,有些厂家会发送一幅融合画面,融合画面中大画面展示的是演示流,小画面展示的是主流视频的融合画面;有些厂家在主流发送演示流,是只在该通道中发送演示流,不再发送主流视频,即不发送主流融合画面。
不支持演示流信令的报文,示例如下:
支持演示流信令的报文如下: