跳转到内容

GB28181 国标协议

GB28181 是中国国家标准《安全防范视频监控联网系统信息传输、交换、控制技术要求》(GB/T 28181),广泛应用于视频监控系统的互联互通。Monibuca V6 提供完整的 GB28181 信令和媒体支持。

属性
信令协议SIP(UDP/TCP 可选)
信令端口5060(默认)
媒体协议RTP over UDP
媒体端口10000-20000(默认范围)
推流✅ 支持(设备推流到平台)
拉流✅ 支持(平台向设备请求流)
延迟1-3 秒
Feature Flaggb28181
  • 设备注册与管理:支持设备注册、心跳保活、目录查询
  • 实时视频:支持设备实时视频预览
  • 云台控制(PTZ):支持上下左右旋转、变焦、预置位等
  • 通道管理:支持多通道设备,独立管理每个通道
  • 平台级联:支持上下级平台对接
  • 录像查询与回放:支持设备端录像检索和远程回放
  • 录像下载:支持从设备下载历史录像
  • WebSocket 通知:实时推送设备状态变化
Cargo.toml
[features]
gb28181 = ["dep:plugin-gb28181"]
gb28181:
enable: true
sip:
- domain: "3402000000"
domain_id: "34020000002000000001"
username: "34020000002000000001"
password: "your_sip_password"
digest_retry_limit: 2
digest_stale_retry_limit: 2
lan_ip: "192.168.1.100"
wan_ip: "203.0.113.1"
port: 5060
network: udp
rtp_port_min: 10000
rtp_port_max: 20000
heartbeat_timeout: 60
register_timeout: 300
download_storage_path: "./downloads"
download_retention_days: 7
配置项类型默认值说明
domainstring"3402000000"SIP 域名(行政区划编码)
domain_idstring"34020000002000000001"SIP 域 ID(20 位编码)
usernamestring?nullDigest 认证用户名(可选)
passwordstring?nullDigest 认证密码(可选)
digest_retry_limitu82普通 401 挑战最大重试次数
digest_stale_retry_limitu82stale=true 挑战最大重试次数
lan_ipstring"127.0.0.1"SIP 内网 IP
wan_ipstring"127.0.0.1"SIP 公网 IP(NAT 穿透用)
portu165060SIP 信令端口
networkstring"udp"网络协议(udptcp
配置项类型默认值说明
enablebooltrue是否启用插件
rtp_port_minu1610000RTP 媒体端口范围起始
rtp_port_maxu1620000RTP 媒体端口范围结束
heartbeat_timeoutu6460心跳超时时间(秒)
register_timeoutu64300注册超时时间(秒)
download_storage_pathstring"./downloads"录像下载存储路径
download_retention_daysi647下载文件保留天数

GB28181 设备 ID 遵循 20 位编码规则:

中心编码(8位) + 行业编码(2位) + 类型编码(3位) + 序号(7位)

例如:34020000001320000001

  • 34020000:行政区划编码(安徽省)
  • 00:行业编码
  • 132:类型编码(IPC 摄像机)
  • 0000001:序号
设备 Monibuca (SIP Server)
| |
| -------- REGISTER ----------> |
| <------- 401 Unauthorized --- |
| -------- REGISTER (Auth) ---> |
| <------- 200 OK ----------- |
| |
| -------- 心跳(MESSAGE) -----> |
| <------- 200 OK ----------- |
| |

在摄像头或 NVR 的国标配置页面,填写以下信息:

参数说明
SIP 服务器 ID34020000002000000001对应配置中的 domain_id
SIP 服务器域3402000000对应配置中的 domain
SIP 服务器地址192.168.1.100Monibuca 服务器 IP
SIP 服务器端口5060对应配置中的 port
设备编号34020000001320000001设备自身的 20 位编码
传输协议UDP对应配置中的 network

支持的 PTZ 操作:

操作说明
方向控制上、下、左、右、左上、左下、右上、右下
变焦控制放大、缩小
光圈控制打开、关闭
预置位设置、调用、删除预置位

PTZ 控制通过 HTTP API 调用,详见 GB28181 API 文档

GB28181 设备可以有多个通道(如 NVR 下挂多个摄像头)。Monibuca 支持:

  • 自动发现设备通道(通过 Catalog 查询)
  • 对每个通道独立发起实时预览
  • 对每个通道独立进行 PTZ 控制
  • 通道状态实时更新

Monibuca 可以作为下级平台,向上级平台注册并推送流数据:

下级设备 → Monibuca (下级平台) → 上级平台

级联功能支持:

  • 向上级平台注册
  • 响应上级平台的目录查询
  • 按需向上级平台推送实时流
  • 同步设备状态变化

通过 GB28181 信令查询设备端的历史录像列表,支持按时间范围和录像类型过滤。

支持从设备端拉取历史录像进行回放,支持:

  • 正常播放
  • 快进 / 慢放
  • 定位(Seek)
  • 暂停 / 恢复

支持将设备端的历史录像下载到本地存储,下载完成后自动保存到配置的存储路径。

GB28181 插件提供 WebSocket 接口,实时推送设备事件:

const ws = new WebSocket('ws://localhost:8080/gb28181/ws');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('GB28181 事件:', data);
};

事件类型包括:设备上线、设备离线、通道更新、报警通知等。

GB28181 设备推送的流可以通过其他协议播放:

Terminal window
# 通过 HTTP-FLV 播放设备流
ffplay http://localhost:8080/flv/gb28181/34020000001320000001.flv
# 通过 HLS 播放
ffplay http://localhost:8080/hls/gb28181/34020000001320000001/index.m3u8
# 通过 RTMP 播放
ffplay rtmp://localhost:1935/gb28181/34020000001320000001

部署 GB28181 服务需要开放以下端口:

Terminal window
# SIP 信令端口
sudo ufw allow 5060/udp
# RTP 媒体端口范围
sudo ufw allow 10000:20000/udp

联系我们

微信公众号:不卡科技 微信公众号二维码
腾讯频道:流媒体技术 腾讯频道二维码
QQ 频道:p0qq0crz08 QQ 频道二维码
QQ 群:751639168 QQ 群二维码