一、视频接入整体架构
SkeyeVSS网关的视频接入采用模块化设计,支持多种协议和场景的灵活接入:
[视频源] → [协议适配层] → [媒体处理引擎] → [分发输出]
↑
[接入控制管理]
二、支持的视频接入协议
1. 主流协议支持
协议类型 | 典型设备 | 端口要求 | 适用场景 |
---|---|---|---|
RTSP | IPC/NVR | 554/TCP | 安防监控 |
RTMP | 编码器/软件 | 1935/TCP | 直播推流 |
GB28181 | 国标设备 | 5060/TCP | 公安联网 |
ONVIF | 网络摄像机 | 80,3702 | 设备发现 |
HLS | 存储服务器 | 80/443 | 点播回放 |
WebRTC | 浏览器 | UDP动态端口 | 低延迟交互 |
三、具体接入方式详解
1. RTSP设备接入
典型配置流程:
# 网关配置示例
<Source>
<Name>FrontDoor</Name>
<URL>rtsp://admin:password@192.168.1.100:554/Streaming/Channels/101</URL>
<Transport>TCP</Transport> <!-- 可选UDP -->
<BufferTime>300</BufferTime> <!-- 缓冲毫秒数 -->
</Source>
高级参数:
- 支持Basic/Digest认证
- 可配置TCP/UDP传输模式
- 支持PTZ控制(ONVIF Profile S)
2. RTMP推流接入
推流端配置:
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -tune zerolatency \
-c:a aac -f flv "rtmp://skeye-gateway/live/streamkey?token=SECURE_TOKEN"
网关验证机制:
- 推流鉴权(Token/签名)
- 黑白名单IP过滤
- 流超时断开保护
3. GB28181国标接入
SIP配置模板:
<!-- sip.xml -->
<GB28181>
<LocalID>34020000001320000001</LocalID>
<SIPServer>34020000002000000001</SIPServer>
<SIPPort>5060</SIPPort>
<Password>12345678</Password>
<HeartbeatInterval>60</HeartbeatInterval>
</GB28181>
设备注册流程:
- SIP OPTIONS 心跳检测
- REGISTER 注册
- INVITE 发起媒体
- 200 OK 建立连接
4. ONVIF设备发现
WS-Discovery协议实现:
# Python示例代码
from onvif import ONVIFCamera
cam = ONVIFCamera('192.168.1.100', 80, 'admin', '12345')
media_service = cam.create_media_service()
profiles = media_service.GetProfiles()
stream_uri = media_service.GetStreamUri({'ProfileToken': profiles[0].token})
四、媒体处理流程
1. 转码与转封装
处理链示例:
原始流(H.264) → 解码 → 图像处理(去噪/OSD) → 编码(H.265/VP9) → 封装(FLV/MPEG-DASH)
转码参数配置:
{
"outputs": [
{
"name": "720p",
"video": {
"codec": "h264",
"width": 1280,
"height": 720,
"bitrate": "2000k",
"framerate": 25
},
"audio": {
"codec": "aac",
"samplerate": 44100,
"bitrate": "128k"
}
}
]
}
2. 智能分析集成
AI分析模块接入:
// 视频帧回调示例
class AnalysisCallback : public IVideoFrameCallback {
public:
void OnFrame(const VideoFrame& frame) override {
// 调用AI分析SDK
DetectionResult results = ai_engine_.Analyze(frame);
// 处理分析结果...
}
};
五、网络与安全配置
1. 网络拓扑建议
+-----------------+
| 防火墙/NAT |
+--------+--------+
|
+--------+--------+
| 接入网关 |
| (端口映射/SSL) |
+--------+--------+
|
+--------------+---------------+
| |
+--------+--------+ +--------+--------+
| 媒体处理节点 | | 存储集群 |
| (转码/分析) | | (录像/截图) |
+----------------+ +----------------+
2. 安全措施
-
传输加密:
- SRTP for RTSP/RTP
- RTMPS替代RTMP
- TLS for HTTP/WebSocket
-
访问控制:
# Nginx访问限制示例 location /live { allow 192.168.1.0/24; deny all; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; }
-
审计日志:
- 记录所有接入尝试
- 存储关键操作日志
- 异常行为检测
六、常见问题排查
1. 连接问题诊断工具
# 网络连通性测试
nc -zv 192.168.1.100 554 # RTSP端口
tcpdump -i eth0 port 5060 # SIP流量抓包
# 流媒体分析
ffprobe -i rtsp://example.com/stream
mediainfo --Details=1 http://example.com/playlist.m3u8
2. 典型错误处理
错误现象 | 可能原因 | 解决方案 |
---|---|---|
401 Unauthorized | 认证失败 | 检查用户名/密码,确认Digest/Basic模式 |
连接超时 | 网络阻断 | 检查防火墙/ACL,确认端口映射 |
花屏/卡顿 | 丢包/缓冲不足 | 调整TCP传输模式,增加缓冲区 |
音画不同步 | 时间戳错误 | 检查设备NTP配置,启用PTS校正 |
七、性能优化建议
-
硬件加速配置:
# 启用Intel QSV ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 ... # NVIDIA GPU加速 ffmpeg -hwaccel cuda -c:v h264_cuvid -i input.mp4 ...
-
负载均衡策略:
// Go语言实现加权轮询 func SelectUpstream() *Upstream { total := 0 for _, server := range servers { total += server.Weight } rand.Seed(time.Now().UnixNano()) r := rand.Intn(total) for _, server := range servers { r -= server.Weight if r < 0 { return server } } return servers[0] }
某市区级城域视联网平台,建设视频共享统一管理,整合现有全域视联网平台,打通不同部门和街道的视频链路,解决信息孤岛和人员不足等问题,实现视频资源跨区域、跨行业、跨领域、跨平台的共享应用,满足各委办部门业务需求。
SkeyeVSS视频网关汇聚接入与物联网感知能力,构建某市区全域视联网平台,对该市区现有视频监控资源进行汇聚、采集、分析与管理,整合和统一管理该市区各委办局和企事业单位视频监控设备和数据,提升该市区整个区域的全面感知和监测、数据共享服务能力,接入场景已覆盖多个重点领域和重点地域。
通过以上技术方案,SkeyeVSS网关可以实现:
- 单节点支持500+路视频接入
- 端到端延迟控制在500ms内(WebRTC模式)
- 95%以上的服务可用性
- 完善的设备管理和状态监控