基于 RTSP 与 WebRTC 的低延迟 AI 视频流处理方案
一种基于 RTSP 服务器与 WebRTC 的低延迟 AI 视频流处理方案。通过主动拉流架构替代传统被动推流,结合 NVENC 硬件编码,将端到端延迟从 2-5 秒降低至 50-100ms。方案支持海康等 RTSP 摄像头接入,利用 ZLMediaKit 进行转码分发,适用于智慧园区、工厂监控及家庭安防等场景,显著降低硬件成本并提升系统灵活性。

一种基于 RTSP 服务器与 WebRTC 的低延迟 AI 视频流处理方案。通过主动拉流架构替代传统被动推流,结合 NVENC 硬件编码,将端到端延迟从 2-5 秒降低至 50-100ms。方案支持海康等 RTSP 摄像头接入,利用 ZLMediaKit 进行转码分发,适用于智慧园区、工厂监控及家庭安防等场景,显著降低硬件成本并提升系统灵活性。



左侧: 原始海康摄像头画面
右侧: AI 检测处理后画面
延迟差异: 几乎察觉不到!
传统方案延迟通常在 2-5 秒,本方案可实现 50-100ms 的端到端延迟。
AI 安防项目中常见的延迟问题:
传统方案的架构缺陷:
AI 程序 → RTMP 推流 → ZLMediaKit → WebRTC 播放 ↑ 被动推送,多帧缓冲积压 延迟:2-5 秒 ❌
通过编写基于 live555 的 RTSP 服务器,配合 NVENC 硬件编码,实现 50-100ms 的端到端延迟。核心思路是将 AI 推理后的视频流封装成 RTSP 流,让 ZLMediaKit 以拉流方式获取。
本方案架构:
AI 程序 → RTSP 服务器 → ZLMediaKit 拉流 → WebRTC 播放 ↑ 主动拉取,单帧缓冲无积压 延迟:50-100ms ✅
核心差异对比:
| 对比项 | 传统 RTMP 推流 | 本方案 RTSP 服务器 |
|---|---|---|
| 数据流向 | AI 程序主动推送 | ZLM 主动拉取 |
| 缓冲策略 | 多帧缓冲积压 | 单帧缓冲极速 |
| 编码模式 | 标准编码 | NVENC 零延迟 |
| 端到端延迟 | 2-5 秒 ❌ | 50-100ms ✅ |
| 网络抖动 | 容易断流重连 | 自动重连恢复 |
传统软件编码的痛点:
本方案硬件编码配置示例:
// NVENC 零延迟配置 - 这是核心!
av_opt_set(_codecCtx->priv_data,"preset","p1",0); // 最快预设
av_opt_set(_codecCtx->priv_data,"tune","ll",0); // 低延迟调优
av_opt_set(_codecCtx->priv_data,"zerolatency","1",0); // 零延迟模式
av_opt_set(_codecCtx->priv_data,"delay","0",0); // 零延迟
av_opt_set(_codecCtx->priv_data,"rc-lookahead","0",0); // 禁用前瞻
性能提升对比:
# 只需几行代码,海康摄像头立即拥有 AI 功能!
import rtsp_server
import your_ai_model # YOLO、人脸识别、行为分析...
# 连接现有海康摄像头
cap = cv2.VideoCapture("rtsp://admin:[email protected]:554/stream")
# 创建 RTSP 服务器
server = rtsp_server.RTSPServer(8554, "ai_stream", 704, 576, 25)
server.start()
while True:
ret, frame = cap.read()
# AI 推理 - 这里可以是任何 AI 模型!
results = your_ai_model.detect(frame)
frame = draw_detections(frame, results)
# 推送到 RTSP 服务器,ZLM 自动拉取转 WebRTC
server.push_frame(frame)
// C++ 版本,支持多路摄像头同时 AI 处理
RTSPServerWrapper server1, server2, server3;
// 每路摄像头独立 AI 处理,互不干扰
server1.init(8554, "face_detection", 704, 576, 25); // 人脸识别
server2.init(8554, "license_plate", 704, 576, 25); // 车牌识别
server3.init(8554, "behavior_analysis", 704, 576, 25); // 行为分析
// 统一 WebRTC 播放,延迟都是 50-100ms!
// http://localhost:8088/index/api/webrtc?app=live&stream=face_detection
// http://localhost:8088/index/api/webrtc?app=live&stream=license_plate
// http://localhost:8088/index/api/webrtc?app=live&stream=behavior_analysis
git clone https://github.com/xiabie666/rtsp_server.git
cd rtsp_server
build.bat # 自动下载依赖并编译
# 替换成你的摄像头 IP 和密码
RTSPServer.exe rtsp://admin:[email protected]:554/stream --zlm-secret YOUR_SECRET
http://localhost:8088/index/api/webrtc?app=live&stream=ai_stream
| 指标 | 数值 | 对比传统方案 | 说明 |
|---|---|---|---|
| 编码延迟 | <5ms | 降低 90% | NVENC 硬件加速 |
| 端到端延迟 | 50-100ms | 降低 95% | 架构创新 |
| CPU 占用 | <5% | 降低 90% | GPU 硬件编码 |
| 支持分辨率 | 最高 4K | 无限制 | 海康 4K 摄像头完美支持 |
| 并发路数 | 无限制 | 无限制 | 每路独立实例 |
| 内存占用 | 极低 | 降低 80% | 单帧缓冲策略 |

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online