跳过导航,直接进入主要内容跳过导航,直接进入主要内容跳过导航,直接进入主要内容

配置参考

Gb28181Config 是普通 serde 结构体——TOML、JSON、代码构造都可以。 TOML 形态与库的出身项目的 [gb28181] 配置节完全一致,宿主可以把 结构体直接 re-export 进自己的配置文件体系。

安装

cargo add gb28181-rs@0.12.0

全字段参考

use gb28181_rs::config::Transport;

let mut config = Gb28181Config::default();
config.platform_sip_address = "192.0.2.10".to_string();
config.platform_sip_port = 5060;
config.device_id = "34020000001320000001".to_string();
config.password = "secret".to_string();
config.transport = Transport::Tcp;
字段 类型 默认值 含义
enabled bool false 仅宿主侧开关。库自身从不读取;宿主用它决定是否调用 Gb28181Server::spawn()。
platform_sip_address String "192.168.1.1" SIP 服务器(平台)地址。
platform_sip_port u16 5060 SIP 服务器(平台)端口。
device_id String "34020000001320000001" 20 位国标设备 ID(规范文档示例值)。
channel_id String "34020000001320000001" 目录中上报的 20 位通道 ID。
sip_domain String "3402000000" SIP 域(通常是平台中心编码)。
password String "mibeecam2026" 与平台约定的 SIP 摘要认证密码。
local_sip_port u16 5060 本地 SIP 监听端口(UDP socket 或 TCP listener)。
register_interval_secs u64 60 REGISTER 刷新间隔。
heartbeat_interval_secs u64 60 保活(MESSAGE)间隔。
heartbeat_timeout_count u32 3 平台侧判定离线的连续丢保活次数。
transport Transport Udp udp 或 tcp(serde 小写;未知值直接解析报错)。
user_agent Option<String> None SIP User-Agent;None → 中性 gb28181-rs/<版本>。
device_name Option<String> None 目录/DeviceInfo 名称;None → Camera <设备ID>。
manufacturer Option<String> None None → Unknown。
model Option<String> None None → Unknown。
firmware Option<String> None None → crate 版本号。

等价的 TOML 配置节:

[gb28181]
enabled = true
platform_sip_address = "192.0.2.10"
platform_sip_port = 5060
device_id = "34020000001320000001"
channel_id = "34020000001310000001"
sip_domain = "3402000000"
password = "secret"
local_sip_port = 5060
transport = "udp"
user_agent = "my-host/1.0 (gb28181-rs)"
device_name = "前门摄像头"
manufacturer = "Acme"
model = "Cam-X"
firmware = "1.2.3"

身份字段与中性默认

五个身份字段的默认值不携带任何产品/厂商名——这一点由库卫生测试 钉死。用 effective_*() 方法取生效值:

let cfg = Gb28181Config::default();
assert_eq!(cfg.effective_manufacturer(), "Unknown");
assert!(cfg.effective_user_agent().starts_with("gb28181-rs/"));
assert_eq!(cfg.effective_device_name(), format!("Camera {}", cfg.device_id));

Default::default() 与空 TOML 节产出完全相同的值(有测试钉死), 代码构造与文件驱动的宿主看到同一套默认。

示例默认值警告

规范文档的示例值(192.168.1.1、mibeecam2026、示例设备 ID)为了线上 报文格式稳定而保留。如果运行中的服务器仍看到它们, warn_on_example_defaults() 会打警告——服务器在 bind 之后自动调用。 两台设备共用示例 ID 会在平台上撞号;配置没加载成功而静默指向示例 平台,是它拦的另一类事故。

设备 ID

device_id 与 channel_id 是 20 位编码:

[8 位行政区划(GB/T 2260)][2 位行业][3 位类型][7 位序号]

代码里构造与解析:

use gb28181_rs::{format_device_id, parse_device_id, device_types};

let id = format_device_id("34020000", 0, device_types::IPC, 42)?; // 34020000001320000042
let parts = parse_device_id(&id)?; // region_code, industry_type, device_type, serial

已知类型常量:IPC(111)、NVR(118)、DECODER(121)、 ALARM(122)、AUDIO(134)。

可访问性增强功能已加载,支持焦点管理、键盘导航和屏幕阅读器
页面已加载完成,可访问性功能已启用