GB/T-28181服务器驱动
一、 协议介绍
GB/T-28181协议 信令部分:设备使用sip协议和平台进行通信。 流媒体部分:平台对收到的RTP流媒体进行解RTP, 解PS,再进行h.264(h.265)+g711的解码。
平台驱动实现了GB28181服务端,可接收客户端注册,查看设备通道,查看预览与回放。
二、驱动配置
一般情况下,如果实例配置、设备表配置、表记录配置中存在相同的字段,优先级依次升高,不填时默认继承上一级的配置。
1、打开设备监控-驱动管理, 点击添加驱动, 选择driver-media-server
实例配置
在驱动实例配置中填写gb28181服务端的相关参数
因为本驱动是服务端,因此平台所在服务器需要对外开发端口。首先注意服务器防火墙应该开放对应的端口,如5060/udp,58200/tcp。 windows系统中,驱动端口已直接对外暴露;如果服务器使用linux系统,需要修改docker-compose.yaml文件,将容器内的端口映射到宿主机。
linux防火墙配置
执行systemctl status firewalld
,如果状态为active,需要确认防火墙是否添加了相应的端口。
添加端口(以5060/udp,58200/tcp为例):
firewall-cmd --permanent --add-port=5060/udp
firewall-cmd --permanent --add-port=58200/tcp
添加后应重载配置:
firewall-cmd --reload
查看端口是否添加成功:
firewall-cmd --list-ports
docker-compose.yaml文件修改端口映射
一般在app目录下,也可以通过运维管理页面-服务管理-工具-编辑部署文件修改。
先找到要修改的段落,一般名称为项目id(default)-驱动实例id-driver-media-server。
设备表配置
在数据管理页面中,新建设备表,选择上一步创建的驱动实例。
表记录配置
平台一个设备可以对应多个摄像头,可以填写2个摄像头的sipId与通道id,便于选择播放不同分辨率的画面。
设备配置
1. 海康威视
摄像头
勾选启用,点击保存后刷新页面,部分摄像头可以查看注册状态。显示在线时,设备已经成功连接到平台。
录像机
名称 | 说明 |
---|---|
本地SIP端口 | 默认为5060。若要修改,以本地实际的端口为准 |
SIP服务器ID | 由平台提供,即平台SIP服务器的ID,20位数字 |
SIP服务器域 | SIP服务器ID的前10位 |
SIP服务器地址 | 由平台提供,即平台SIP服务器的IP地址,仅支持IPv4地址由平台提供 |
SIP服务器端口 | 服务器端口默认为5060,设置范围为1-65535 |
SIP用户认证ID | 即设备的ID,20位数字。设备类型为111-118 |
SIP用户认证密码 | 由平台提供即平台注册密码 |
端口号 | 协议 | 用途 |
---|---|---|
5060 | udp或tcp(一般为udp) | 信令端口,完成与设备的会话,实现设备的注册、查询、推流请求 |
58200 | udp或tcp(一般为tcp) | 流媒体,接收设备推送的预览流和回放流 |
2. 大华
待添加
3. 宇视
宇视录像机28181配置:配置-平台配置-国标28181,注意:1.国标本地配置标签里配置录像机的sip用户id。2.视频通道表格中填写每个通道的通道编码。
四、视频管理页面:
视频管理页面中显示当前项目中GB28181驱动服务端,已经通过GB28181协议连接上的设备,方便调试。 使用说明参考文档设备监控-视频管理
五、画面示例:
预览:在画面中,添加一个画面组件,右侧组件属性中,选择设备表视频,选择创建好的表记录,视频类型和视频地址会自动根据所选的表记录填写。 云台:画面中选择云台组件,填写设备,也可以从上级组件组继承。
六、使用m7s单机版测试设备
- 下载 下载地址: https://m7s.live/ 页面最下方
- 修改配置文件
解压后,将.m7s文件夹中的gb28181.yaml文件中的mediaip和sipip,改为本机实际地址;密码默认为123456,也可根据实际情况填写。
没有这个文件夹和文件时,可手动创建一个,或者第一次运行后,会创建.m7s文件夹。
Realm: "3402000000"
mediaip: 192.168.124.148
medianetwork: tcp
mediaport: 58200
password: "123456"
realm: "3402000000"
serial: "34020000002000000001"
sipip: 192.168.124.148
sipnetwork: udp
sipport: 5060 - 双击console.exe启动。
- 点击页面中的进入详情。
- 进入详情后,左侧点击GB28181标签。
- 按照步骤2中的参数配置要测试的录像机。
- 如果录像机配置正确,会显示已经注册到平台的录像机。
- 展开设备,点击拉流按钮。
- 左侧选择流列表,点击播放-http局域网。
- 在打开的页面中,点击播放。
问题排查
1. 常见问题
一、视频管理-国标设备页面,没有看到配置的录像机或摄像头
如果视频管理-国标设备页面,没有出现配置过的录像机或摄像头,说明录像机没有成功注册到平台。可以按以下方式进行排查:
- 设备上的密码配置错误,设备上配置的密码,是平台驱动事先配置好的密码,和摄像头登录密码无关。
- 端口协议配置错误。部分摄像头可以配置协议,当设备配置的协议和驱动配置的协议不同时,设备无法注册到平台。
二、视频管理-国标设备页面,点击播放后只弹出播放器窗口,无法播放画面
打开F12,查看/playback/live/url这个请求中的请求参数和返回数据。
400 直接报错
三、画面中视频组件无法播放视频
打开F12,查看/playback/live/url这个请求中的请求参数和返回数据。
如果url请求为200,点击ws,查看请求响应码是否是101,消息中是否有数据。
四、画面中视频组件无法播放回放
打开F12,查看/playback/records,/playback/url这两个请求参数中的日期和返回数据。
2. 服务器抓包
通过修改配置,查看日志等方法无法解决问题时,需要使用wireshark或tcpdump命令抓包,通过查看服务器和设备间的具体通信过程来判断问题。
(1)windows抓包
windows系统可直接使用wireshark进行抓包,注意要选对网卡。
常用过滤条件:
ip.addr == 192.168.124.115 根据ip地址过滤
udp.port == 5060 根据端口过滤
tcp.port == 58200 根据端口过滤
sip 只显示sip协议
(2)linux抓包
在命令行执行以下命令:
抓包显示 tcpdump -i eth0 -s 0 port 5060
抓包保存成文件 tcpdump -i eth0 -s 0 port 5060 -w debug.cap
注: eth0为网卡名,根据实际情况修改
抓包文件复制到调试电脑上,用wireshark打开。
附录
gb28181统一编码规则
数据点和指令配置json,可直接复制
数据点:
[
{
"id": "state",
"name": "在线状态"
}
]
指令:
[
{
"name": "上",
"ops": {
"action": "cameraUp",
"param": "上"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "下",
"ops": {
"action": "cameraDown",
"param": "下"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "左",
"ops": {
"action": "cameraLeft",
"param": "左"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "右",
"ops": {
"action": "cameraRight",
"param": "右"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "左上",
"ops": {
"action": "cameraLeftUp",
"param": "左上"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "左下",
"ops": {
"action": "cameraLeftDown",
"param": "左下"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "右上",
"ops": {
"action": "cameraRightUp",
"param": "右上"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "右下",
"ops": {
"action": "cameraRightDown",
"param": "右下"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "放大",
"ops": {
"action": "cameraZoomIn",
"param": "放大"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "缩小",
"ops": {
"action": "cameraZoomOut",
"param": "缩小"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
},
{
"name": "转到指定预置位",
"ops": {
"action": "cameraPreset",
"param": "转到指定预置位"
},
"writeIn": {
"defaultValue": {
"default": 3
},
"ioway": "默认写入",
"type": "number"
}
}
]