目录
fastbee平台监控设备交互流程
1.1 流程描述如下
1.2 主要问题出现的步骤
1.3 抓包截图
GB28181标准直播协议流程
2.1 命令流程描述如下
播放器url示例
3.1 http 和 https
3.2 flv协议
3.3 fmp4协议
3.4 rtmp协议
fastbee平台监控设备交互流程
1.1 流程描述如下
a) fastbee平台调用zlmediakit的接口 /index/api/openRtpServer,创建rtp服务器,并将rtp推流端口返回,填入Invite消息中的sdp信息
b) fastbee平台(SIP服务器)向设备发送Invite消息,消息头域中携带 Subject 字段,表明点播的视频源ID、发送方媒体流序列号、媒体流接收者ID、接收端媒体流序列号等参数,SDP消息体中s字段为“Play”代表实时点播
c) 设备收到fastbee平台(SIP服务器)的Invite请求后,先回复 100 Trying 响应,再回复 200 OK 响应,携带SDP消息体,消息体中描述了设备发送媒体流的IP、端口、媒体格式、SSRC字段等内容
d) fastbee平台(SIP服务器)收到设备返回的 200 OK 响应后,向设备发送 ACK 请求,请求中不携带消息体,完成与设备的 Invite 会话建立过程。
e) 设备向zlmediakit创建的rtp服务器推流
f) zlmediakit通过onPublish hook api 通知fastbee平台流已经发布和推流鉴权,fastbee平台响应需要开启拉流协议和流配置等信息。zlmediakit通过onStreamChanged hook api 通知fastbee平台不同协议推流器流注册状态
g) 播放器根据设置的默认播放地址拉取flv直播流
h) zlmediakit通过onPlay hook api 通知fastbee平台播放器开始播放和播放鉴权
1.2 主要问题出现的步骤
- 步骤b,c,d中数据包没有按照标准协议格式,导致直播会话建立出问题
- zlmediakit配置有问题,检查api http/https端口(8082,8443),rtp收流端口(udp 30000-30100),https证书等
- 设备和服务器连通性是否正常,设备的sip包->服务器java 5061,设备rtp推流->zlmediakit 30000-30100,不通将导致步骤e设备推流失败
- hook api配置是否正确,java应用部署在容器中,hook api为:java:8080, java应用在idea中启动,zlmediakit服务器在本机docker中启动,hook api为:host.docker.internal:8080 配置不正确将导致步骤f,h中回调接口出问题
1.3 抓包截图
GB28181标准直播协议流程
2.1 命令流程描述如下
a) 媒体流接收者向SIP服务器发送Invite消息,消息头域中携带 Subject字段,表明点播的视频源ID、发送方媒体流序列号、媒体流接收者ID、接收端媒体流序列号等参数,SDP消息体中s字段为“Play”代表实时点播。
b) SIP服务器收到Invite请求后,通过三方呼叫控制建立媒体服务器和媒体流发送者之间的媒体连接。向媒体服务器发送Invite消息,此消息不携带SDP消息体。
c) 媒体服务器收到SIP服务器的Invite请求后,回复200OK 响应,携带SDP消息体,消息体中描述了媒体服务器接收媒体流的IP、端口、媒体格式等内容。
d) SIP服务器收到媒体服务器返回的200OK 响应后,向媒体流发送者发送Invite请求,请求中携带消息3中媒体服务器回复的200OK 响应消息体,s字段为“Play”代表实时点播,增加y字段描述SSRC值,f字段描述媒体参数。
e) 媒体流发送者收到SIP服务器的Invite请求后,回复200OK 响应,携带SDP消息体,消息体中描述了媒体流发送者发送媒体流的IP、端口、媒体格式、SSRC字段等内容。
f) SIP服务器收到媒体流发送者返回的200OK 响应后,向媒体服务器发送 ACK 请求,请求中携带消息5中媒体流发送者回复的200 OK 响应消息体,完成与媒体服务器的Invite会话建立过程。
g) SIP服务器收到媒体流发送者返回的200OK 响应后,向媒体流发送者发送 ACK 请求,请求中不携带消息体,完成与媒体流发送者的Invite会话建立过程。
h) 完成三方呼叫控制后,SIP服务器通过B2BUA 代理方式建立媒体流接收者和媒体服务器之间的媒体连接。在消息1中增加SSRC值,转发给媒体服务器。
i) 媒体服务器收到Invite请求,回复200OK 响应,携带SDP消息体,消息体中描述了媒体服务器发送媒体流的IP、端口、媒体格式、SSRC值等内容。
j) SIP服务器将消息9转发给媒体流接收者。
k) 媒体流接收者收到200OK 响应后,回复 ACK 消息,完成与SIP服务器的Invite会话建立过程。
l) SIP服务器将消息11转发给媒体服务器,完成与媒体服务器的Invite会话建立过程。
m) 媒体流接收者向SIP服务器发送 BYE消息,断开消息1、10、11建立的同媒体流接收者的Invite会话。
n) SIP服务器收到 BYE消息后回复200OK 响应,会话断开。
o) SIP服务器收到 BYE消息后向媒体服务器发送 BYE消息,断开消息8、9、12建立的同媒体服务器的Invite会话。
p) 媒体服务器收到 BYE消息后回复200OK 响应,会话断开。
q) SIP服务器向媒体服务器发送 BYE 消息,断开消息2、3、6建立的同媒体服务器的Invite会话。
r) 媒体服务器收到 BYE消息后回复200OK 响应,会话断开。
s) SIP 服务器向媒体流发送者发送 BYE 消息,断开消息4、5、7建立的同媒体流发送者的Invite会话。
t) 媒体流发送者收到 BYE消息后回复200OK 响应,会话断开。
播放器url示例
3.1 http 和 https
http协议下,server为:http://ip:port 例如:http://192.168.1.66:8082
https协议下,server为:https://域名:port 例如: https://fastbee.cn:8443
3.2 flv协议
播放url格式:server/rtp/流ID.live.flv
示例:http://192.168.1.66:8082/rtp/gb_play_11010100001320000001_11010100001320000001.live.flv
https://fastbee.cn:8443/rtp/gb_play_11010100001320000001_11010100001320000001.live.flv
3.3 fmp4协议
播放url格式:server/rtp/流ID.live.mp4
示例:http://192.168.1.66:8082/rtp/gb_play_11010100001320000001_11010100001320000001.live.mp4
https://fastbee.cn:8443/rtp/gb_play_11010100001320000001_11010100001320000001.live.mp4
3.4 rtmp协议
播放url格式:rtmp://ip:port/rtp/流ID
示例:rtmp://192.168.1.66:1935/rtp/gb_play_11010100001320000001_11010100001320000001
3.5 rtsp协议
播放url格式:rtsp://ip:port/rtp/流ID
示例:rtsp://192.168.1.66:554/rtp/gb_play_11010100001320000001_11010100001320000001