第4章 多摄像头硬件接口
USB摄像头 · CSI摄像头 · 网络摄像头 (RTSP/RTMP) 选型与连接
在多摄像头系统中,硬件接口的选择直接影响带宽、延迟、同步精度与部署成本。本章深入剖析三种主流摄像头接口的物理特性、协议栈与实战连接方案,并提供选型对照表与连接架构图。
4.1 USB 摄像头 (UVC)
USB Video Class (UVC) 是免驱摄像头的事实标准。多摄像头场景下需注意 USB 控制器带宽分配:
- 接口选型:优先 USB 3.0 (5Gbps) 或 USB 3.1 Gen2 (10Gbps),单控制器建议 ≤4 路 1080p@30fps。
- 连接拓扑:使用独立 USB 控制器或多根 PCIe 扩展卡避免带宽争抢。
- 同步局限:硬件同步信号缺失,软件时间戳补偿为主。
💡 实战建议:在 Linux 下通过
lsusb -t 查看 USB 树,确保摄像头分散在不同 root hub。
4.2 CSI 摄像头 (MIPI CSI-2)
CSI (Camera Serial Interface) 常见于 Raspberry Pi、Jetson 等嵌入式平台。优势是极低延迟与硬件同步。
- 硬件连接:使用 FPC 排线,长度建议 ≤15cm,避免信号衰减。
- 多路方案:通过 CSI 多路复用器 (如 TC358748) 或板载多 CSI 端口 (Jetson Orin 支持 8路)。
- 同步机制:硬件帧同步 (FSYNC) 或 GPIO 触发,可实现亚帧级对齐。
# 在 Jetson 上启用双 CSI 摄像头 (示例)
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! nvvidconv ! autovideosink
gst-launch-1.0 nvarguscamerasrc sensor-id=1 ! nvvidconv ! autovideosink
4.3 网络摄像头 (RTSP / RTMP)
基于 IP 网络的摄像头适合分布式场景。RTSP 用于实时流传输,RTMP 常用于推流至服务器。
| 协议 | 传输层 | 延迟 | 适用场景 | 多路同步方式 |
|---|---|---|---|---|
| RTSP | TCP/UDP | ~100-300ms | 本地监控、NVR | NTP 时间戳对齐 |
| RTMP | TCP | ~1-3s | 直播推流 | 服务器端同步 |
| ONVIF | TCP | ~200ms | 安防互操作 | NTP + 硬件触发 |
连接示例:通过 OpenCV 拉取 RTSP 流:
import cv2
cap = cv2.VideoCapture("rtsp://192.168.1.100:554/stream1")
while True:
ret, frame = cap.read()
if not ret: break
cv2.imshow("RTSP Camera", frame)
if cv2.waitKey(1) & 0xFF == ord('q'): break
cap.release()
4.4 选型对照总表
| 特性 | USB 摄像头 | CSI 摄像头 | 网络摄像头 |
|---|---|---|---|
| 最大分辨率 | 4K (USB 3.0) | 4K (4-lane) | 4K / 8K (H.265) |
| 多路同步精度 | 软件 (10-30ms) | 硬件 (<1ms) | NTP (1-10ms) |
| 传输距离 | 5m (USB 3.0) | 0.3m (排线) | 100m (以太网) |
| 成本 (每路) | 低 | 中 | 中高 |
| 推荐场景 | 桌面原型 | 嵌入式同步 | 分布式部署 |
🔌 连接检查清单:① 供电充足 (USB 独立供电 / PoE+);② 驱动与协议兼容 (UVC/ONVIF);③ 网络带宽预留 (H.264 4K 约 20Mbps);④ 时间同步 (NTP 或 PTP)。