Skip to main content

video assess

fastbeeSeptember 27, 2024About 11 min

一、监控平台整体架构

监控平台整体架构
监控平台整体架构

二、视频部署步骤

2.1 服务器开放端口

注意!!!务必到服务器安全组开放对应端口,否则设备上线,点播和直播等功能无法使用。

2.2 修改sip配置和record配置,并编译jar包

# sip 配置 默认情况下是关闭sip服务的,需要时开启该服务
sip:
  enabled: true
## 注意!!!docker部署保持默认即可,window测试环境填本地网卡内网IP
  ip: 177.7.0.13
  port: 5061
  domain: 3402000000
  id: 34020000002000000001
  password: 12345678
# [可选] 监听的HTTP端口, 网页和接口调用都是这个端口
# 您需要使用实际的证书名称替换domain_name.jks
# 证书获取参考文档:https://help.aliyun.com/zh/ssl-certificate/user-guide/enable-https-on-spring-boot
server:
    port: 18081
    servlet:
        context-path: /         # 应用的访问路径
    #  HTTPS配置, 默认不开启
    ssl:
        # 是否开启HTTPS访问 默认关闭
        enabled: false
        # enabled: true
        # 证书文件路径,您需要使用实际的证书名称替换domain_name.jks。
        key-store: classpath:fastbee.online.jks
        # 证书密码 修改为对应密码
        key-store-password: fastbee
        # 证书类型, 默认为jks,根据实际修改
        key-store-type: JKS

2.3 将jar包,https证书复制到docker部署目录,然后启动

record包目录证书和zlm配置文件目录zlm运行日志

2.4 物联网平台侧设置

1.新增监控产品

2.新增之后,可修改SIP配置(SIP配置读取的是Java中application-prod.yml的配置)

3.新建流媒体服务器配置--视频中心--视频配置

4.新建设备,生成设备ID和通道ID

5.将相关信息填入设备

将产品中SIP配置和生成的id填入设备

三、非Docker部署,服务拆分部署

四、window环境下搭建调试监控设备环境

1.使用docker脚本部署zlmediakit

下载docker桌面版本

使用docker目录下脚本启动zlmediakit

进入docker/data目录下,输入: docker-compose -f docker-compose-window.yml up -d

2.修改sip配置

查看网卡ip

修改java配置中的sip配置

启动后端和前端项目
后端 启动FastBeeApplication应用

前端 输入 npm run dev启动项目

3.在fastbee平台新增流媒体服务器

新增服务器

添加局域网ip为192.168.31.159的服务器

修改HookUrl为:host.docker.internal:8080

五、监控设备的国标GB28181协议直播流程

1.fastbee平台监控设备交互流程

(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平台播放器开始播放和播放鉴权

(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中回调接口出问题

(3)抓包截图

2.GB28181标准直播协议流程

(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 响应,会话断开。

3.播放器url示例

(1).http 和 https

http协议下,server为:http://ip:port 例如:http://192.168.1.66:8082

https协议下,server为:https://域名:port 例如: https://fastbee.cn:8443

(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)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

(4)rtmp协议

播放url格式:rtmp://ip:port/rtp/流ID

示例:rtmp://192.168.1.66:1935/rtp/gb_play_11010100001320000001_11010100001320000001

(5)rtsp协议

播放url格式:rtsp://ip:port/rtp/流ID

示例:rtsp://192.168.1.66:554/rtp/gb_play_11010100001320000001_11010100001320000001

六、具体产品接入示例

1.海康接入示例: 配置路径:配置-> 网络-> 高级配置-> 平台接入

2.大华接入示例: 配置路径:配置-> 网络配置-> 平台接入

3.摄像头流媒体格式建议为:视频:h264 音频:aac