fnOS + HomeAssistant + go2rtc:小米摄像头低延迟接入全攻略
很多人在Home Assistant里接小米摄像头时会遇到坑:官方集成只支持部分型号,而且延迟高、画面卡顿。本文教你在fnOS上用Docker部署go2rtc,通过其原生支持的小米协议,实现低延迟实时画面接入。
一、痛点:为什么选择go2rtc?
go2rtc的优势:
原生支持小米生态:直连Mi Home协议,不需要RTSP,不需要刷固件 超低延迟:官方宣传"zero-delay",实测延迟小于500ms 多协议输出:同时支持WebRTC/MSE/HLS,浏览器直接看 零依赖:单文件运行
二、架构说明
小米摄像头 ↓ (Mi Home协议) go2rtc (Docker) ↓ (WebRTC) Home Assistant (Docker) ↓ (WebRTC卡片) 浏览器/APP
关键组件:
go2rtc:流媒体服务器,原生支持小米摄像头 Home Assistant:智能家居平台,通过go2rtc集成获取摄像头 WebRTC卡片:在前端显示低延迟画面
三、Docker部署go2rtc
3.1 SSH进fnOS,执行以下命令
# 创建配置目录
mkdir -p /Volume1/docker/go2rtc
# 创建配置文件
cat > /Volume1/docker/go2rtc/go2rtc.yaml << 'EOF'
# go2rtc配置文件
log:
level: info
api:
listen: ":1984"
rtsp:
listen: ":8554"
webrtc:
listen: ":8555"
streams:
xiaomi_camera1: xiaomi://192.168.1.100
xiaomi_camera2: xiaomi://192.168.1.101
EOF
3.2 启动go2rtc容器
docker run -d --name go2rtc --network host -v /Volume1/docker/go2rtc/go2rtc.yaml:/config/go2rtc.yaml --restart unless-stopped alexxit/go2rtc:latest
3.3 带认证的完整配置示例
cat > /Volume1/docker/go2rtc/go2rtc.yaml << 'EOF'
log:
level: info
api:
listen: ":1984"
username: admin
password: "xxxx"
rtsp:
listen: ":8554"
username: admin
password: "xxxx"
streams:
xiaomi:
- "xiaomi://1485775781:cn@192.168.5.100?did=1190217257&model=xiaomi.camera.c302&subtype=2#video=copy#audio=pcmu#rtsp_transport=tcp"
xiaomi_4k:
- "xiaomi://1485775781:cn@192.168.5.42?did=1148839477&model=chuangmi.camera.079ac1&subtype=3#video=copy#audio=pcmu#rtsp_transport=tcp"
EOF
四、配置Home Assistant
4.1 安装WebRTC集成
进入Home Assistant → HACS → 集成,搜索WebRTC并安装WebRTC Camera插件。
4.2 添加go2rtc配置
在Home Assistant配置目录创建go2rtc.yaml:
webrtc:
default_command: >-
rtsp://192.168.1.200:8554/{stream}
streams:
xiaomi_camera1: xiaomi_camera1
xiaomi_camera2: xiaomi_camera24.3 重启Home Assistant
docker restart homeassistant
五、在仪表盘添加摄像头卡片
type: 'custom:webrtc-camera' url: 'xiaomi_camera1' title: 客厅监控 mode: webrtc,webrtc/tcp,mse
六、常见问题排查
Q1:go2rtc容器启动失败
docker logs go2rtc
Q2:摄像头连不上,显示401 Unauthorized
解决:
确认摄像头已在米家APP中添加 确认摄像头和fnOS在同一个局域网 尝试重启摄像头(断电10秒)
Q3:如何查看go2rtc连接状态?
访问 http://192.168.1.200:1984
七、进阶:多摄像头混合接入
streams: xiaomi_cam1: xiaomi://192.168.1.100 hikvision_cam: rtsp://admin:password@192.168.1.50/Streaming/Channels/101 wireless_cam: rtsp://192.168.1.80:554/live usb_cam: v4l2:///dev/video0
八、性能对比
| 方案 | 延迟 | CPU占用 | 设置难度 |
|---|---|---|---|
| 原生RTSP直连 | 500ms | 低 | 简单 |
| go2rtc (本文) | <500ms | 低 | 中等 |
| FFmpeg转码 | 2-5s | 高 | 复杂 |
| 云存储中转 | 3-10s | - | 简单 |
总结
通过go2rtc作为中间层,可以不用刷固件,延迟低于500ms,支持WebRTC在任何设备流畅观看。
