小米摄像头烧卡?借助群晖实现本地存储,告别云存储焦虑

共计 4946 个字符,预计需要花费 13 分钟才能阅读完成。

小米摄像头性价比高,几乎是家庭监控的首选,但用久了就会发现一个让人头疼的问题:烧卡。小米摄像头自带的TF卡槽,长期24小时不间断写入,MicroSD卡的寿命通常撑不过一年。更让人焦虑的是,卡坏了数据就没了,回看录像全凭运气。

那有没有一种方案,既能保留小米摄像头的好用,又能实现可靠的本地存储?答案是:群晖NAS + Surveillance Station + go2rtc。

本文记录我如何将小米摄像头的视频流通过go2rtc转为RTSP流,接入群晖的Surveillance Station进行本地存储,同时为了避免群晖硬盘24小时写入降低寿命,将USB外接硬盘挂载为共享文件夹作为监控存储,以及Surveillance Station破解60路授权的方法。

整体方案

小米摄像头烧卡?借助群晖实现本地存储,告别云存储焦虑
先说下整体的技术架构:

  1. go2rtc:作为流媒体中转,将小米摄像头的私有协议转为标准RTSP流
  2. 群晖Surveillance Station:作为NVR,接收RTSP流并进行录像存储
  3. USB外接硬盘:挂载为群晖共享文件夹,作为Surveillance Station的存储路径,避免频繁写入NAS主硬盘
  4. 破解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两个服务,流程稍复杂,但稳定性更好。具体步骤:

  1. 部署Miloco网关,获取摄像头的DID和密码
  2. 部署go2rtc,创建空的流名称
  3. 部署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流是否正常:

  1. go2rtc Web界面:在http://<IP>:1984中点击对应流,查看是否正常播放
  2. VLC播放器:打开网络串流,输入 rtsp://<IP>:8554/客厅
  3. FFmpeg命令行:ffmpeg -i rtsp://<IP>:8554/客厅 -frames:v 1 test.jpg

如果能正常播放或截图,说明RTSP流已经就绪,可以接入群晖了。

群晖Surveillance Station接入

安装Surveillance Station

在群晖的套件中心搜索"Surveillance Station"安装即可。安装完成后打开,首次使用会有向导引导。

添加摄像头

在Surveillance Station中添加摄像头:

  1. 打开Surveillance Station → 主菜单 → 摄像头 → 添加
  2. 选择"通用摄像头"
  3. 填写RTSP流地址:rtsp://<go2rtc的IP>:8554/客厅
  4. 根据摄像头编码格式选择H.264或H.265
  5. 完成添加

添加成功后,可以在Surveillance Station中实时预览摄像头画面。

破解60路授权

群晖Surveillance Station默认只有2路免费摄像头授权,对于家庭用户来说,2路可能刚好够用,但如果摄像头多了就不够了。购买官方授权,每路约200-300元,确实不便宜。

社区有一个开源项目提供了破解60路授权的方案:https://github.com/ohyeah521/Surveillance-Station

破解步骤

  1. 下载对应版本的Surveillance Station

    从群晖官方归档下载对应你DSM版本的Surveillance Station:https://archive.synology.com/download/Package/SurveillanceStation

  2. 运行破解脚本

    通过SSH连接群晖,执行破解脚本:

    # 下载破解脚本
    curl -o activated.sh https://raw.githubusercontent.com/ohyeah521/Surveillance-Station/main/activated.sh
    # 赋予执行权限
    chmod +x activated.sh
    # 执行破解
    sudo ./activated.sh
  3. 重启Surveillance Station

    sudo synoservicectl --restart pkgctl-SurveillanceStation

破解完成后,打开Surveillance Station → 许可证页面,可以看到授权数量已变为60路。

⚠️ 注意:DSM 7.0之后的版本存在"时间炸弹"机制,大约每隔60-90分钟会主动停止所有摄像头录像。解决方案是:

  1. 屏蔽群晖域名synosurveillance.synology.com的访问(在路由器或群晖hosts中添加)
  2. 设置定时任务,每隔一段时间自动重启Surveillance Station服务:
    # 添加到群晖计划任务中
    /var/packages/SurveillanceStation/target/bin/ssctl restart

这种方案会丢失十几秒的录像,如果监控位置比较重要,需要权衡一下。

另一种方案:CMS多机授权

如果手头有两台群晖设备,可以使用CMS(中央管理系统)方案:

  1. 在副群晖上使用上述破解方案,获得58路授权
  2. 通过CMS将副群晖的授权共享给主群晖
  3. 主群晖获得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。

⚠️ 建议:更改存储位置前,先删除之前的所有监控视频,否则文件转移时间很长,容易卡死。

总结

整体方案梳理一下:

  1. go2rtc将小米摄像头的私有协议转为标准RTSP流,解决了小米摄像头不支持RTSP的问题
  2. 群晖Surveillance Station作为NVR接收RTSP流并录像,提供了专业的监控管理功能
  3. USB外接硬盘通过bind mount挂载为共享文件夹,作为监控存储路径,降低主硬盘写入负担
  4. 破解60路授权解决了默认2路摄像头授权不够的问题

这套方案的核心优势在于:

  • 数据自主可控:录像存储在本地,不依赖米家云服务
  • 硬盘寿命保障:USB硬盘承担写入压力,主硬盘安心做NAS本职工作
  • 成本可控:USB硬盘坏了更换成本低,破解授权省去了官方授权的费用
  • 扩展性强:go2rtc支持多种协议输出,未来可以接入HomeKit、Frigate等

当然也有一些注意事项:

  • 破解授权存在时间炸弹风险,需要额外处理
  • USB硬盘的可靠性不如NAS硬盘,建议定期检查硬盘健康状态
  • go2rtc直连小米摄像头的方式目前延迟可能偏大,如果对延迟敏感可以考虑micam桥接方案

参考资料

正文完
 
root
版权声明:本站原创文章,由 root 2026-05-21发表,共计4946字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。