Skip to main content

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防火墙配置

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。 linux防火墙启动

设备表配置

在数据管理页面中,新建设备表,选择上一步创建的驱动实例。 设备表设备配置

表记录配置

表记录设备配置 平台一个设备可以对应多个摄像头,可以填写2个摄像头的sipId与通道id,便于选择播放不同分辨率的画面。

设备配置

1. 海康威视

摄像头

海康摄像头gb28181配置页面 勾选启用,点击保存后刷新页面,部分摄像头可以查看注册状态。显示在线时,设备已经成功连接到平台。

录像机

海康录像机gb28181配置页面

名称说明
本地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用户认证密码由平台提供即平台注册密码
端口号协议用途
5060udp或tcp(一般为udp)信令端口,完成与设备的会话,实现设备的注册、查询、推流请求
58200udp或tcp(一般为tcp)流媒体,接收设备推送的预览流和回放流

2. 大华

待添加

3. 宇视

宇视录像机28181配置:配置-平台配置-国标28181,注意:1.国标本地配置标签里配置录像机的sip用户id。2.视频通道表格中填写每个通道的通道编码。 宇视录像机gb28181配置页面 宇视录像机gb28181配置页面

四、视频管理页面:

视频管理页面中显示当前项目中GB28181驱动服务端,已经通过GB28181协议连接上的设备,方便调试。 使用说明参考文档设备监控-视频管理

五、画面示例:

预览:在画面中,添加一个画面组件,右侧组件属性中,选择设备表视频,选择创建好的表记录,视频类型和视频地址会自动根据所选的表记录填写。 画面预览 云台:画面中选择云台组件,填写设备,也可以从上级组件组继承。 画面云台

六、使用m7s单机版测试设备

  1. 下载 下载地址: https://m7s.live/ 页面最下方
  2. 修改配置文件 解压后,将.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
  3. 双击console.exe启动。
  4. 点击页面中的进入详情。 m7s实例页面
  5. 进入详情后,左侧点击GB28181标签。
  6. 按照步骤2中的参数配置要测试的录像机。
  7. 如果录像机配置正确,会显示已经注册到平台的录像机。 m7s实例页面
  8. 展开设备,点击拉流按钮。 m7s实例页面
  9. 左侧选择流列表,点击播放-http局域网。 m7s实例页面
  10. 在打开的页面中,点击播放。 m7s实例页面

问题排查

1. 常见问题

一、视频管理-国标设备页面,没有看到配置的录像机或摄像头

如果视频管理-国标设备页面,没有出现配置过的录像机或摄像头,说明录像机没有成功注册到平台。可以按以下方式进行排查:

  1. 设备上的密码配置错误,设备上配置的密码,是平台驱动事先配置好的密码,和摄像头登录密码无关。
  2. 端口协议配置错误。部分摄像头可以配置协议,当设备配置的协议和驱动配置的协议不同时,设备无法注册到平台。

二、视频管理-国标设备页面,点击播放后只弹出播放器窗口,无法播放画面

打开F12,查看/playback/live/url这个请求中的请求参数和返回数据。

400 直接报错 预览f12

三、画面中视频组件无法播放视频

打开F12,查看/playback/live/url这个请求中的请求参数和返回数据。

如果url请求为200,点击ws,查看请求响应码是否是101,消息中是否有数据。 预览f12ws

四、画面中视频组件无法播放回放

打开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统一编码规则

统一编码规则1 统一编码规则2 统一编码规则3

数据点和指令配置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"
}
}
]