小米摄像头怎么接入RTSP?Go2RTC转流、EasyNVR录像与公网访问教程

前言

很多家用摄像头买回来以后,最开始用得都很轻松。手机App能看实时画面,门口有人经过也能收到提醒,看起来已经满足了日常监控需求。

但真正想查看历史录像时,问题就出现了。云存储需要长期付费,SD卡容量有限且稳定性一般,录像文件还可能被分散在不同品牌App里。明明是自己家的画面,却要依赖厂商服务才能完整回看,这种感觉并不踏实。

之前通过Micam三件套接入本地NAS,已经可以实现摄像头录像本地化,但对低配设备并不友好。像N1盒子这类只有2GB内存的设备,同时运行多个容器会比较吃力,长期稳定性和资源占用都需要考虑。

Go2RTC支持小米摄像头协议后,方案就可以变得更轻。它负责从小米摄像头获取视频流,并转换成标准RTSP地址;EasyNVR再接入这条RTSP流,完成实时预览、录像计划和历史回放。原来需要多个组件才能完成的链路,现在可以压缩成更适合低配NAS运行的双容器方案。

本文将以刷入飞牛NAS的N1设备为例,完成Docker环境准备、Go2RTC部署、小米摄像头RTSP地址生成、EasyNVR本地录像配置,并通过 cpolar 为EasyNVR建立公网访问入口。最终目标很明确:让家用摄像头的录像回到自己的硬盘里,同时在外出时也能随时查看和回放。

1 什么是Go2RTC?

Go2RTC 是一款功能强大的通用摄像头流媒体服务器,专为解决安防监控领域的视频协议兼容性与低延迟传输难题而设计。它能够作为一个高效的中转网关,将各类传统的监控视频流汇聚并转换为现代化的 Web 友好协议。

作为核心组件,Go2RTC 具备以下关键特性:

  • 多协议互通:原生支持 RTSP、RTMP、HTTP-FLV、WebRTC、MSE、HLS、MJPEG 等几乎所有主流流媒体协议,实现了不同设备与平台间的无缝对接。
  • 极致低延迟:通过 WebRTC 和 MSE 技术,它能将视频传输延迟降低至毫秒级,提供真正实时的监控体验。
  • 轻量级架构:采用 Go 语言开发,编译为独立的二进制文件,零外部依赖。这意味着它不仅部署简便,而且对硬件资源占用极低,非常适合在 NAS、树莓派等边缘设备上长期运行。
  • 灵活扩展:既支持 Docker 容器化部署,也能完美集成到 Home Assistant 等智能家居系统中。

在本方案中,Go2RTC 扮演着"流媒体引擎"的角色:它负责从摄像头拉取原始视音频流,经过实时处理后,不仅能直接通过浏览器流畅播放,还能将标准化的视频流分发给 EasyNVR 进行持久化存储。

2 准备阶段

2.1 部署环境和系统说明

本期教程以用N1刷入arm版的飞牛Nas系统为例,其他Nas系统支持Docker均可(如:绿联Nas、极空间Nas,群晖Nas等)。

目前N1的arm版飞牛固件已支持无线网卡驱动 ,可以通过连接WiFI的方式来进行联网。可以刷入453 版固件,然后进行OTA 升级至当前最新1.1.18系统版本即可。

2.2 启动Docker服务

在部署之前,首先确保你的Docker为启动状态,在飞牛Nas首页,点击Docker 图标,进入应用内启动Docker服务

**PS:**建议存储位置选择挂载的外部存储空间。

2.3 启用SSH服务并连接

进入飞牛Nas的系统设置,来到SSH项,将SSH功能设置为启用

设置好以后,接着电脑上摁Win + X键,选择终端(管理员),打开PowerShell窗口(cmd命令提示符窗口也可以的):

接着,输入如下命令连接你的飞牛NAS(也可以使用其他ssh工具):

bash 复制代码
# ssh 你的Nas用户名@你的Nas系统IP地址
ssh n1@192.168.50.228

连接成功后,输入如下命令,然后输入密码,切换至root用户:

shell 复制代码
sudo -i

这样就成功连接上了飞牛Nas的ssh终端啦!

3 Docker部署Go2RTC

在终端,输入如下docker命令,进行一键部署:

shell 复制代码
mkdir -p $(pwd)/go2rtc/config && touch $(pwd)/go2rtc/config/go2rtc.yaml && docker run -d --name go2rtc --restart always --network host -v $(pwd)/go2rtc/config:/config alexxit/go2rtc

命令会进行创建**/go2rtc/config目录和创建 go2rtc.yaml**配置文件,并且执行Docker一键部署命令,如下图:

部署完成后,输入如下命令,查看运行状态:

shell 复制代码
docker ps

可以看到,status(状态)显示为UP ,代表其运行中,接在在浏览器访问你的飞牛Nas的IP地址+1984端口即可访问到web页面:

shell 复制代码
http://192.168.50.228:1984

可以看到,成功的访问到页面啦!go2rtc就部署好了!

4 配置小米摄像头获取RTSP地址

首先,点击顶部导航栏的add 菜单,进入如下页面:

接着,滚动到底部,展开Xiaomi这一栏,填写你的小米账号信息,进行登录,然后点击加载设备:

复制url,然后滚动到顶部,选择顶部导航栏的config菜单,在yaml配置区输入如下配置:

yaml 复制代码
# =================================================================
# GO2RTC 示例配置文件
# -----------------------------------------------------------------
# 【使用说明】
# 1. 访问后台:http://宿主机IP:1984 (默认账号: admin / 密码: password)
# 2. RTSP构造:若取消rtsp段落注释,播放地址如下:
#    - 4K流: rtsp://admin:password@宿主机IP:8554/cam_4k
#    - 标准: rtsp://admin:password@宿主机IP:8554/cam_std
# 3. 参数说明:
#    - subtype=3: 锁定 4K 极清分辨率
#    - subtype=2: 锁定 1080P/2K 高清分辨率
#    - #audio=pcmu: 强制音频解码,解决部分设备无声问题
# =================================================================

api:
  listen: ":1984"
  username: admin
  password: "password"

# rtsp:
#   listen: ":8554"
#   username: admin
#   password: "password"

streams:
  xiaomi:
    - "you_xiaomi_url&subtype=2#video=copy#audio=pcmu"
  xiaomi_4k:
    - "you_xiaomi_url&subtype=3#video=copy#audio=pcmu"

xiaomi:
  "USER_ID": V1:EXAMPLE_TOKEN

即如下图所示:

设置完成后,点击Save & Restart按钮,进行保存并且重启,接着回到首页,点击stream进去,验证是否能播放:

如下能够出现画面即代表配置成功啦:

由于前面配置中开启了rtsp的用户名和密码功能,以xiaomi_4k这个流为例,所以rtsp的流地址应为:

shell 复制代码
# 无密码的构建方式
rtsp://宿主机IP:8554/xiaomi_4k

# 开启密码认证的构建方式
rtsp://admin:123456@宿主机IP:8554/xiaomi_4k

PotPlayer 播放器中进行演示,按ctrl + u 快速打开播放网络地址窗口,输入rtsp的流进行测试:

播放成功,这样我们就完成了Go2RTC的部署和测试,摄像头视频流已经成功转换为标准RTSP协议。

5 Docker部署EasyNVR

现在我们已经有了标准的RTSP视频流,接下来就需要将这些流接入EasyNVR进行录像存储和管理。EasyNVR作为专业的NVR系统,能够提供录像、回放、告警等完整的监控功能。

5.1 EasyNVR介绍

EasyNVR 是一款专业的软件型网络录像机(Network Video Recorder,NVR),用于集中管理和录像多路网络摄像头的视频流。它可以替代摄像头厂商提供的云存储服务,将录像统一存储在本地 NAS 或服务器上,实现完全的本地化管理。

EasyNVR 的核心功能包括:多摄像头接入 ,支持 RTSP、RTMP、ONVIF 等标准协议,并能够接入不同品牌和型号的摄像头,实现统一管理;本地录像存储 ,视频数据直接写入 NAS 或本地服务器,不依赖厂商云服务,从而避免长期订阅费用,同时支持长期录像和循环覆盖策略;实时监控与历史回放 ,通过 Web 界面集中管理所有摄像头,可以查看实时画面、快速定位历史录像,并支持多路同步播放和时间轴浏览;稳定运行,可在 NAS、迷你主机或家用服务器上 7×24 稳定运行,Docker 部署支持跨平台、快速安装和升级。

5.2 Docker一键部署EasyNVR

回到N1的终端窗口,输入如下命令,查看磁盘占用及情况:

shell 复制代码
df -h

可以看到,外置存储大小一共239G ,挂载的根路径为vol1,所以我们需要将录像存储路径改为该位置,首先在该位置单独创建一个文件夹:

shell 复制代码
mkdir -p /vol1/EasyNVR
cd /vol1/EasyNVR

然后进行一键部署EasyNVR(注意替换存储路径):

shell 复制代码
docker run -d --name easynvr --restart always --network host --log-opt max-size=50M -v "$PWD/configs:/app/configs" -v "$PWD/logs:/app/logs" -v "$PWD/temporary:/app/temporary" -v /vol1/EasyNVR:/app/r -v "$PWD/stream:/app/stream" registry.cn-shanghai.aliyuncs.com/rustc/easynvr_arm64:latest

如下图所示:

接着,在浏览器中访问你的飞牛Nas主机ip地址+10000端口 ,即可访问到EasyNVR 页面了:

5.3 初始化登录EasyNVR

访问到EasyNVR页面后,直接点击页面的登录按钮即可进入首页,然后语言设置直接选择简体,确定即可:

属性配置为你的局域网地址,一般自动获取正确,不用修改,直接点击确定即可:

开放端口页面,默认无需操作,直接下一步即可:

在重置账号页面,创建一个新的管理员账户,点击确定:

这样就完成初始化操作啦,使用新的账号进行登录,即可进入EasyNVR首页:

6 将RTSP流接入EasyNVR

前面已经介绍了EasyNVR支持接入 RTSP、RTMP、ONVIF 等标准协议,并能够接入不同品牌和型号的摄像头,实现统一管理。简单说一下区别:RTSP 是纯视频流协议,只能拉流观看,不支持云台控制;RTMP 主要用于推流场景,同样不支持设备控制;而 ONVIF 是一套完整的设备管理标准,除了拉流外还支持云台控制、设备发现、参数配置等功能,如果你的摄像头支持 ONVIF,优先推荐使用它接入。

首先打开EasyNVR的首页,然后选择设备列表 菜单,点击添加按钮:

这里由于是RTSP协议地址 ,所以选择PULL ,下面也可以看到提示为接入设备RTSP、HTTP、TCP实时流 ,然后填写好拉流地址,点击确定:

点击确定后,就可以看到你的设备添加上来了,可以看到在线状态:

点击播放图标,点击进入,然后可以看到录像计划显示为未录像,这里直接将其设置为,这样就会一直录制啦:

点击下方的直播中按钮,即可进入到观看页面:

如下图所示:

可以看到,该直播预览页面集成了多协议实时播放、线路切换、云台控制与参数可视化 等能力,用户可根据实际场景在 WebRTC、HTTP-FLV、RTMP、RTSP 等协议间自由切换以兼顾延迟与兼容性 ;在视频播放的同时,页面还实时展示分辨率、编码格式、传输方式、码率等关键流媒体信息 ,便于调试与排障;若视频流协议源本身支持云台控制,还可直接在页面中完成方向控制、变倍与速度调节,实现从预览到运维的一体化操作。

7 查看录像回放

前面设置好了录像计划,设置的为每天 ,设置好后就会即刻开始录像 。我们回到首页,选择菜单的录像回放

我们直接点击查看图标,即可进来回放页面了:

不仅回放功能,还支持选择指定时间段进行下载:

好啦,基本设置就完成啦,EasyNVR还拥有更多功能值得你去探索!

8 穿透EasyNVR实现公网访问

到这里,EasyNVR 已经在飞牛 NAS 上跑起来了,录像也都存在本地硬盘上,彻底告别了云存储月租费 。但问题来了:虽然各家摄像头 APP 也能看实时画面,但想回看历史录像就要交钱,而且家里几个不同品牌的摄像头还得装好几个 APP,管理起来很麻烦。

有了 cpolar 内网穿透 ,这些问题就迎刃而解了。只需简单配置,就能让 EasyNVR 通过公网地址随时随地访问 ------不仅能看实时画面,更重要的是免费回放本地存储的所有录像 。而且一个链接就能分享给家人,不用每个人都装 APP、注册账号,浏览器打开就能看

8.1 什么是cpolar?

  • cpolar 是一款内网穿透工具,可以将你在局域网内运行的服务(如本地 Web 服务器、SSH、远程桌面等)通过一条安全加密的中间隧道映射至公网,让外部设备无需配置路由器即可访问。
  • 广泛支持 Windows、macOS、Linux、树莓派、群晖 NAS 等平台,并提供一键安装脚本方便部署。

8.2 安装cpolar

在前面连接的飞牛终端中输入如下命令,一键安装cpolar:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

shell 复制代码
sudo systemctl status cpolar

8.3 注册及登录cpolar web ui管理界面

访问cpolar官网,点击免费注册按钮,进行账号注册

进入到如下的注册页面进行账号注册:

注册完成后,在浏览器中输入飞牛NAS的IP地址+9200端口访问 web ui管理界面:

shell 复制代码
http://192.168.50.228:9200/

输入刚才注册好的cpolar账号登录即可进入后台页面:

8.4 穿透EasyNVR的WebUI界面

点击左侧菜单栏的隧道管理,展开进入隧道列表页面,页面下默认会有 2 个隧道:

  • ssh隧道,指向22端口,tcp协议
  • website隧道,指向8080端口,http协议(http协议默认会生成2个公网地址,一个是http,另一个https,免去配置ssl证书的繁琐步骤)

点击编辑website的隧道,这里设置名称为easynvr方便辨识,然后本地地址填写10000端口系统的访问地址,地区这里选择的China Top,然后点击更新:

接着,点击左侧菜单的状态菜单,接着点击在线隧道列表菜单按钮,可以看到有2个easynvr的隧道,一个为http协议,另一个为https协议:

接下来在浏览器中访问easynvr隧道生成的公网地址,这里以https为例:

可以看到成功的访问到EasyNVR的页面啦!不过随机域名方式适合预算有限 的用户。使用此方式时,系统会每隔 24 小时 左右自动更换一次域名地址。对于长期访问的不太友好,但是该方案是免费 的,如果您有一定的预算,可以查看固定域名方式 ,且访问更稳定哦。

9 固定二级子域名

随机域名虽然免费,但每 24 小时左右会自动更换一次 ,每次变化都要重新记地址、重新分享链接,用起来确实不太方便。如果你希望拥有一个固定不变、简短易记的专属域名 ,只需升级 cpolar 任意付费套餐,即可配置固定二级子域名,彻底告别域名频繁变化的烦恼。下面我们来看看如何操作。

首先,进入官网的预留页面:

shell 复制代码
https://dashboard.cpolar.com/reserved

然后,选择预留 菜单,即可看到保留二级子域名 项,填写其中的地区、名称、描述(可不填)项,然后点击保留按钮,操作步骤图如下:

列表中显示了一条已保留的二级子域名记录:

  • 地区 :显示为China Top
  • 二级域名 :显示为easynvr

注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主

接着,进入侧边菜单栏的隧道管理下的隧道列表,可以看到名为easynvr的隧道:

点击编辑按钮进入编辑页面,修改域名类型为二级子域名,然后填写前面配置好的子域名,点击更新按钮:

接着来到状态菜单下的在线隧道列表可以看到隧道名称为easynvr的公网地址已经变更为二级子域名+固定域名主体及后缀的形式了:

这里以https访问测试一下:

访问成功,让我们再进行登录测试一下:

成功登录!以后你不管是去公司上班,还是外出旅游,都可以通过这个固定的公网地址,随时随地打开 EasyNVR,不仅能实时查看家里的情况,还能随意回放之前的录像。而且,这个地址是永久固定的,不用再担心过段时间就变了,是不是超级方便!

总结

完成配置后,小米摄像头的画面就不再只能依赖厂商App和云存储。Go2RTC负责把摄像头视频流转换成标准RTSP,EasyNVR负责接入、录像和回放,飞牛NAS则承担本地存储任务。

相比多容器方案,Go2RTC加EasyNVR的组合更轻,部署链路也更清晰。对于N1盒子、低配NAS或小型家庭服务器来说,少一个容器就意味着更低的内存占用和更少的维护压力,更适合长期运行。

配置 cpolar 后,EasyNVR不再只能在家里局域网访问。人在公司、外出或旅行时,也可以通过公网地址打开管理页面,查看实时画面或回放已经保存在本地硬盘中的录像。随机域名适合先测试,固定二级子域名则更适合作为长期入口。

当然,监控系统开放公网访问后,账号安全不能忽视。建议为EasyNVR设置强密码,不要公开分享管理地址,并定期检查录像存储空间、循环覆盖策略和摄像头账号配置,避免录像中断或权限泄露。

Go2RTC解决摄像头协议接入问题,EasyNVR解决录像管理问题,飞牛NAS解决本地存储问题,cpolar解决外部访问问题。当这几部分组合起来以后,家用摄像头就从"只能看实时画面、回放依赖云服务",变成了一套自己可控、可扩容、可远程查看的本地监控系统。

相关推荐
ACP广源盛139246256731 小时前
GSV6155 @ACP#工业车规 DP1.4 重定时器 Retimer
大数据·人工智能·分布式·嵌入式硬件
Black蜡笔小新1 小时前
企业AI算力工作站/企业级AI模型工作站DLTM训推一体工作站破解企业AI建模难题
人工智能·机器学习
海兰1 小时前
【AI编程思考:第八篇】从演示到生产:AI工程部署实战指南
大数据·人工智能·ai编程
水龙吟啸1 小时前
华为2026.7.1机考选择题+编程题【速刷敲黑板】
人工智能
名不经传的养虾人1 小时前
从0到1:企业级AI项目迭代日记 Vol.61|记忆不是越多越好,装一道门比装满更重要
数据库·人工智能·ai编程·ai工作流·企业ai
不加辣椒1 小时前
第17章 提示词评估体系
人工智能
写了20年代码的老程序员1 小时前
Java Lambda 类型安全查询是怎么实现的?从字节码层面拆一遍
java·开源
_冷眸_1 小时前
用 OpenAI SDK 统一调用 Claude、Gemini、DeepSeek:聊聊 AI API 聚合网关的实践
人工智能·ai·llm·agent
BreezeJiang1 小时前
为什么你调的 LLM 接口不值钱?——从零理解 Agent 开发的正确姿势
人工智能·架构