共计 4946 个字符,预计需要花费 13 分钟才能阅读完成。
小米摄像头性价比高,几乎是家庭监控的首选,但用久了就会发现一个让人头疼的问题:烧卡。小米摄像头自带的TF卡槽,长期24小时不间断写入,MicroSD卡的寿命通常撑不过一年。更让人焦虑的是,卡坏了数据就没了,回看录像全凭运气。
那有没有一种方案,既能保留小米摄像头的好用,又能实现可靠的本地存储?答案是:群晖NAS + Surveillance Station + go2rtc。
本文记录我如何将小米摄像头的视频流通过go2rtc转为RTSP流,接入群晖的Surveillance Station进行本地存储,同时为了避免群晖硬盘24小时写入降低寿命,将USB外接硬盘挂载为共享文件夹作为监控存储,以及Surveillance Station破解60路授权的方法。
整体方案

先说下整体的技术架构:
- go2rtc:作为流媒体中转,将小米摄像头的私有协议转为标准RTSP流
- 群晖Surveillance Station:作为NVR,接收RTSP流并进行录像存储
- USB外接硬盘:挂载为群晖共享文件夹,作为Surveillance Station的存储路径,避免频繁写入NAS主硬盘
- 破解60路授权:解决Surveillance Station默认只有2路摄像头授权的限制
数据流向:小米摄像头 → go2rtc(RTSP) → Surveillance Station → USB硬盘存储
go2rtc:将小米摄像头转为RTSP流
为什么需要go2rtc
小米摄像头使用的是米家私有协议,不支持标准的RTSP/ONVIF协议,无法直接被NVR接入。go2rtc是一个开源的流媒体服务器,目前已经原生支持小米摄像头,可以直接将小米摄像头的视频流转为RTSP/WebRTC等标准协议输出。
go2rtc项目地址:https://github.com/AlexxIT/go2rtc
小米摄像头支持列表:https://github.com/AlexxIT/go2rtc/issues/1982
Docker部署go2rtc
推荐使用Docker部署,简单干净。以下是docker-compose.yml:
services:
go2rtc:
container_name: go2rtc
image: alexxit/go2rtc:master-hardware
restart: always
network_mode: host
privileged: true
environment:
- TZ=Asia/Shanghai
volumes:
- ./go2rtc:/config
启动后访问 http://<你的IP>:1984 进入go2rtc的Web管理界面。
配置小米摄像头
go2rtc原生支持小米摄像头,配置方式有两种:
方式一:直接在go2rtc中登录小米账号(推荐)
在go2rtc的Web界面中,进入配置页面,添加小米摄像头的流:
streams:
客厅:
- xiaomi://xxx
门口:
- xiaomi://xxx
其中xiaomi://xxx部分,可以在go2rtc的Web界面中通过登录小米账号自动获取摄像头列表和流地址。登录后go2rtc会自动识别局域网内的小米摄像头。
⚠️ 注意:如果在go2rtc的WebUI登录小米账号一直卡在验证码,可以尝试在HomeAssistant的XiaomiGateway3集成中先登录小米账号,再参考go2rtc官方文档进行配置。
方式二:通过micam桥接(备选方案)
如果go2rtc直连方式延迟较大或不稳定,可以使用micam作为桥接。micam是一个专为小米摄像头设计的RTSP桥接服务,基于小米官方的Miloco项目。
项目地址:https://github.com/miiot/micam
这种方式需要额外部署Miloco和micam两个服务,流程稍复杂,但稳定性更好。具体步骤:
- 部署Miloco网关,获取摄像头的DID和密码
- 部署go2rtc,创建空的流名称
- 部署micam,将Miloco获取的流推送到go2rtc
micam的docker-compose.yml示例:
services:
micam1:
image: miiot/micam:main
environment:
MILOCO_BASE_URL: https://192.168.1.xx:8000
MILOCO_PASSWORD: your_md5_password
CAMERA_ID: 10230xxxx
RTSP_URL: rtsp://192.168.1.xx:8554/客厅
VIDEO_CODEC: hevc
STREAM_CHANNEL: 0
TZ: Asia/Shanghai
restart: unless-stopped
画质配置
go2rtc支持通过subtype或channel参数指定画质:
streams:
# 标清
xiaomi1: xiaomi://***&subtype=sd
# 高清(默认)
xiaomi2: xiaomi://***&subtype=hd
# 通过channel指定(双摄摄像头)
xiaomi3: xiaomi://***&channel=2
画质由0到5指定,2表示hd(go2rtc默认)。有些新摄像头的HD可能在3,旧型号在3可能出现损坏的编解码配置,不建议一刀切。
验证RTSP流
配置完成后,可以通过以下方式验证RTSP流是否正常:
- go2rtc Web界面:在
http://<IP>:1984中点击对应流,查看是否正常播放 - VLC播放器:打开网络串流,输入
rtsp://<IP>:8554/客厅 - FFmpeg命令行:
ffmpeg -i rtsp://<IP>:8554/客厅 -frames:v 1 test.jpg
如果能正常播放或截图,说明RTSP流已经就绪,可以接入群晖了。
群晖Surveillance Station接入
安装Surveillance Station
在群晖的套件中心搜索"Surveillance Station"安装即可。安装完成后打开,首次使用会有向导引导。
添加摄像头
在Surveillance Station中添加摄像头:
- 打开Surveillance Station → 主菜单 → 摄像头 → 添加
- 选择"通用摄像头"
- 填写RTSP流地址:
rtsp://<go2rtc的IP>:8554/客厅 - 根据摄像头编码格式选择H.264或H.265
- 完成添加
添加成功后,可以在Surveillance Station中实时预览摄像头画面。
破解60路授权
群晖Surveillance Station默认只有2路免费摄像头授权,对于家庭用户来说,2路可能刚好够用,但如果摄像头多了就不够了。购买官方授权,每路约200-300元,确实不便宜。
社区有一个开源项目提供了破解60路授权的方案:https://github.com/ohyeah521/Surveillance-Station
破解步骤
-
下载对应版本的Surveillance Station
从群晖官方归档下载对应你DSM版本的Surveillance Station:https://archive.synology.com/download/Package/SurveillanceStation
-
运行破解脚本
通过SSH连接群晖,执行破解脚本:
# 下载破解脚本 curl -o activated.sh https://raw.githubusercontent.com/ohyeah521/Surveillance-Station/main/activated.sh # 赋予执行权限 chmod +x activated.sh # 执行破解 sudo ./activated.sh -
重启Surveillance Station
sudo synoservicectl --restart pkgctl-SurveillanceStation
破解完成后,打开Surveillance Station → 许可证页面,可以看到授权数量已变为60路。
⚠️ 注意:DSM 7.0之后的版本存在"时间炸弹"机制,大约每隔60-90分钟会主动停止所有摄像头录像。解决方案是:
- 屏蔽群晖域名
synosurveillance.synology.com的访问(在路由器或群晖hosts中添加)- 设置定时任务,每隔一段时间自动重启Surveillance Station服务:
# 添加到群晖计划任务中 /var/packages/SurveillanceStation/target/bin/ssctl restart这种方案会丢失十几秒的录像,如果监控位置比较重要,需要权衡一下。
另一种方案:CMS多机授权
如果手头有两台群晖设备,可以使用CMS(中央管理系统)方案:
- 在副群晖上使用上述破解方案,获得58路授权
- 通过CMS将副群晖的授权共享给主群晖
- 主群晖获得58+2=60路授权
这种方案没有时间炸弹的问题,但需要两台群晖设备。
USB外接硬盘挂载为监控存储
为什么要用USB硬盘
Surveillance Station默认将录像存储在群晖的主硬盘上,24小时不间断写入对硬盘寿命影响很大。群晖的NAS硬盘通常价格不菲,如果因为监控录像把硬盘写坏了,得不偿失。将USB外接硬盘挂载为监控存储,可以有效降低主硬盘的写入负担,而且USB硬盘坏了更换成本也低得多。
挂载步骤
以DSM 7.2为例:
1. 创建共享文件夹
打开Surveillance Station → 录制 → 归档设置 → 新增 → 添加存储器 → 添加共享文件夹,名称填写surveillance_mount。
⚠️ 注意:这一步必须在USB挂载之前完成,否则Surveillance Station无法识别外接存储。
2. 挂载USB设备到共享文件夹
通过SSH连接群晖,执行挂载命令:
sudo mount -o bind /volumeUSB1/usbshare /volume1/surveillance_mount
其中:
/volumeUSB1/usbshare是USB设备在群晖中的挂载路径,可以通过df -h命令查看/volume1/surveillance_mount是刚才创建的共享文件夹路径
3. 验证挂载
在surveillance_mount文件夹中传一个小文件,查看是否在volumeUSB1/usbshare目录中出现,以此判断挂载是否成功。
4. 设置开机自动挂载
群晖重启后挂载会丢失,需要设置计划任务自动挂载:
打开群晖控制面板 → 任务计划 → 新增 → 触发的任务 → 用户自定义脚本:
- 任务名称:随意,如
mount_usb_surveillance - 用户账号:root
- 事件:开机
- 脚本内容:
mount -o bind /volumeUSB1/usbshare /volume1/surveillance_mount
5. 更改Surveillance Station存储位置
在Surveillance Station中,将摄像头的录制存储路径改为surveillance_mount。
⚠️ 建议:更改存储位置前,先删除之前的所有监控视频,否则文件转移时间很长,容易卡死。
总结
整体方案梳理一下:
- go2rtc将小米摄像头的私有协议转为标准RTSP流,解决了小米摄像头不支持RTSP的问题
- 群晖Surveillance Station作为NVR接收RTSP流并录像,提供了专业的监控管理功能
- USB外接硬盘通过bind mount挂载为共享文件夹,作为监控存储路径,降低主硬盘写入负担
- 破解60路授权解决了默认2路摄像头授权不够的问题
这套方案的核心优势在于:
- 数据自主可控:录像存储在本地,不依赖米家云服务
- 硬盘寿命保障:USB硬盘承担写入压力,主硬盘安心做NAS本职工作
- 成本可控:USB硬盘坏了更换成本低,破解授权省去了官方授权的费用
- 扩展性强:go2rtc支持多种协议输出,未来可以接入HomeKit、Frigate等
当然也有一些注意事项:
- 破解授权存在时间炸弹风险,需要额外处理
- USB硬盘的可靠性不如NAS硬盘,建议定期检查硬盘健康状态
- go2rtc直连小米摄像头的方式目前延迟可能偏大,如果对延迟敏感可以考虑micam桥接方案