在线工具 · mickeyzzc 自研协议库
GB28181 协议库代码生成器
GB/T 28181-2016/2022 · 手写 SIP + MANSCDP + RTP/PS · GB 35114 A 级可选
为 GB/T 28181 国标接入生成骨架:gb28181-go 覆盖设备端(UAC)与平台端(UAS)双角色,gb28181-rs 专注设备端推流。两个孪生库共享 golden 夹具,线格式逐字节一致;GB 35114 A 级安全均为可选模块。 生成内容可直接复制粘贴;API 形态与各库 examples/ 编译参照一致,手册见 MiBee 文档中心。 另有 ONVIF 协议库代码生成器 →
选库指引
摄像头 / 媒体源注册到国标平台并推流 →gb28181-go 或 gb28181-rs(设备端 UAC)
自建平台收设备注册、INVITE 拉流 →gb28181-go(平台端 UAS)
按语言选:Go 双角色全栈,Rust 设备端 →gb28181-go / gb28181-rs
功能组合
角色
平台与身份
信令传输
生成代码
main.go · Go⇄ 可横向滚动
// gb28181-go 设备端(UAC)接入骨架 —— 由 Mi&Bee's 百宝箱 协议库代码生成器生成
// 库: github.com/mickeyzzc/gb28181-go v0.11.0 · MIT
// 安装: go get github.com/mickeyzzc/gb28181-go
package main
import (
"context"
"log"
"time"
"github.com/mickeyzzc/gb28181-go/device"
)
func main() {
cfg := device.Config{
Enabled: true,
PlatformSIPAddress: "192.168.1.10",
PlatformSIPPort: 5060,
DeviceID: "34020000001320000001",
ChannelID: "34020000001310000001",
SIPDomain: "3402000000",
Password: "your-platform-password", // 与平台约定的摘要认证密码——换成你自己的
LocalSIPPort: 5060,
RegisterIntervalSecs: 3600,
HeartbeatIntervalSecs: 60,
HeartbeatTimeoutCount: 3,
Transport: "udp", // udp | tcp | tls(SIPS,GB/T 28181-2022)
}
// FrameHub 是现成的 FrameSource:有界通道、满则丢弃。
// 生产环境把编码器输出接到 hub.Write(au),替换下面的合成帧循环。
hub := device.NewFrameHub()
srv := device.New(cfg, device.DeviceInfo{
Name: "Front Door",
Manufacturer: "MiBee Studio",
Model: "MiBee Eye",
}, hub)
// 可选:录像段索引,支持 RecordInfo/回放 INVITE。
// srv.SetRecordingIndex(myIndex)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
errCh := make(chan error, 1)
go func() { errCh <- srv.Start(ctx) }() // Start 阻塞:注册、保活、目录应答、INVITE 全在其内
// 合成帧循环占位:每秒 1 个 IDR + 1 个 P 帧。真实视频替换为编码器的 NALU 访问单元。
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for i := 0; ; i++ {
select {
case <-ctx.Done():
srv.Stop()
return
case <-ticker.C:
au := device.AccessUnit{Timestamp: time.Now(), KeyFrame: i%5 == 0}
if au.KeyFrame {
au.NALUs = []device.NALU{
{Type: 7, IsSPS: true, Data: []byte{0x67, 0x42}},
{Type: 8, IsPPS: true, Data: []byte{0x68, 0xEB}},
{Type: 5, IsIDR: true, Data: []byte{0x65, 0x01}},
}
} else {
au.NALUs = []device.NALU{{Type: 1, Data: []byte{0x41, 0x02}}}
}
hub.Write(au)
case err := <-errCh:
log.Fatalf("device server: %v", err)
}
}
}
安装:
go get github.com/mickeyzzc/gb28181-go手写 SIP、MANSCDP XML(GB2312/GBK/GB18030/UTF-8)、RTP/PS 媒体。经真实国标平台打磨;GB 35114 A 级安全可选(-tags gb35114)。
生成基于各库当前 release 的 API(gb28181-go v0.11.0 / gb28181-rs v0.12.0)。 所填地址与凭据仅在本页内存中拼装进代码,本站不收集、不上传;示例凭据请务必替换后再部署。
相关选购在淘宝查看「esp32 摄像头开发板」的实时价格与现货去逛逛 →推广