【开源项目】fnOS + HomeAssistant + go2rtc:小米摄像头低延迟接入全攻略

RunaCase
RunaCase
RunaCase
管理员, Keymaster
5817
文章
2
粉丝
软件头条评论0字数 730阅读2分26秒阅读模式

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_camera2

4.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

解决:

  1. 确认摄像头已在米家APP中添加
  2. 确认摄像头和fnOS在同一个局域网
  3. 尝试重启摄像头(断电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在任何设备流畅观看。

 
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证