尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

低配N1也能搭家庭录像中心:Go2RTC与EasyNVR双容器实战

低配N1也能搭家庭录像中心:Go2RTC与EasyNVR双容器实战 前言很多家用摄像头虽然能够在官方App中查看实时画面但一旦想保存更长时间的录像就会遇到内存卡容量有限、云存储需要持续订阅的问题。对于已经有NAS的家庭把录像保存在自己的硬盘里会更灵活。真正麻烦的地方在于并不是所有摄像头都能直接提供标准RTSP地址。特别是部分小米摄像头需要先处理账号认证和私有视频流才能继续接入录像系统。之前常见的Micam组合方案能够解决这个问题但需要同时运行多个容器。对普通NAS影响不大放在只有2GB内存的N1盒子上长期运行时资源占用和维护复杂度都会比较明显。这次采用Go2RTC和EasyNVR组合Go2RTC负责登录小米账号、获取摄像头画面并转换为标准RTSP流EasyNVR负责持续录像、历史回放和文件管理整个流程只需两个核心容器。本文会在ARM版飞牛NAS中完成Docker与SSH准备部署Go2RTC、配置小米摄像头视频流再把生成的RTSP地址接入EasyNVR。最后通过 cpolar 配置公网入口实现外出时查看实时监控和本地录像。1 什么是Go2RTCGo2RTC是一款功能强大的通用摄像头流媒体服务器专为解决安防监控领域的视频协议兼容性与低延迟传输难题而设计。它能够作为一个高效的中转网关将各类传统的监控视频流汇聚并转换为现代化的 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工具# ssh 你的Nas用户名你的Nas系统IP地址sshn1192.168.50.228连接成功后输入如下命令然后输入密码切换至root用户sudo-i这样就成功连接上了飞牛Nas的ssh终端啦3 Docker部署Go2RTC在终端输入如下docker命令进行一键部署mkdir-p$(pwd)/go2rtc/configtouch$(pwd)/go2rtc/config/go2rtc.yamldockerrun-d--namego2rtc--restartalways--networkhost-v$(pwd)/go2rtc/config:/config alexxit/go2rtc命令会进行创建**/go2rtc/config目录和创建go2rtc.yaml**配置文件并且执行Docker一键部署命令如下图部署完成后输入如下命令查看运行状态dockerps可以看到status(状态)显示为UP,代表其运行中接在在浏览器访问你的飞牛Nas的IP地址1984端口即可访问到web页面:http://192.168.50.228:1984可以看到成功的访问到页面啦go2rtc就部署好了4 配置小米摄像头获取RTSP地址首先点击顶部导航栏的add菜单进入如下页面接着滚动到底部展开Xiaomi这一栏填写你的小米账号信息进行登录然后点击加载设备复制url,然后滚动到顶部选择顶部导航栏的config菜单在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. 参数说明# - subtype3: 锁定 4K 极清分辨率# - subtype2: 锁定 1080P/2K 高清分辨率# - #audiopcmu: 强制音频解码解决部分设备无声问题# api:listen::1984username:adminpassword:password# rtsp:# listen: :8554# username: admin# password: passwordstreams:xiaomi:-you_xiaomi_urlsubtype2#videocopy#audiopcmuxiaomi_4k:-you_xiaomi_urlsubtype3#videocopy#audiopcmuxiaomi:USER_ID:V1:EXAMPLE_TOKEN即如下图所示设置完成后点击Save Restart按钮进行保存并且重启接着回到首页点击stream进去验证是否能播放如下能够出现画面即代表配置成功啦由于前面配置中开启了rtsp的用户名和密码功能以xiaomi_4k这个流为例所以rtsp的流地址应为# 无密码的构建方式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 RecorderNVR用于集中管理和录像多路网络摄像头的视频流。它可以替代摄像头厂商提供的云存储服务将录像统一存储在本地 NAS 或服务器上实现完全的本地化管理。EasyNVR 的核心功能包括多摄像头接入支持RTSP、RTMP、ONVIF等标准协议并能够接入不同品牌和型号的摄像头实现统一管理本地录像存储视频数据直接写入 NAS 或本地服务器不依赖厂商云服务从而避免长期订阅费用同时支持长期录像和循环覆盖策略实时监控与历史回放通过 Web 界面集中管理所有摄像头可以查看实时画面、快速定位历史录像并支持多路同步播放和时间轴浏览稳定运行可在 NAS、迷你主机或家用服务器上 7×24 稳定运行Docker 部署支持跨平台、快速安装和升级。5.2 Docker一键部署EasyNVR回到N1的终端窗口输入如下命令查看磁盘占用及情况df-h可以看到外置存储大小一共239G,挂载的根路径为vol1,所以我们需要将录像存储路径改为该位置,首先在该位置单独创建一个文件夹mkdir-p/vol1/EasyNVRcd/vol1/EasyNVR然后进行一键部署EasyNVR注意替换存储路径dockerrun-d--nameeasynvr--restartalways--networkhost--log-opt max-size50M-v$PWD/configs:/app/configs-v$PWD/logs:/app/logs-v$PWD/temporary:/app/temporary-v/vol1/EasyNVR:/app/r-v$PWD/stream:/app/streamregistry.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在前面连接的飞牛终端中输入如下命令一键安装cpolarsudocurlhttps://get.cpolar.sh|sh安装完成后执行下方命令查看cpolar服务状态如图所示即为正常启动sudosystemctl status cpolar8.3 注册及登录cpolar web ui管理界面访问cpolar官网点击免费注册按钮进行账号注册进入到如下的注册页面进行账号注册注册完成后,在浏览器中输入飞牛NAS的IP地址9200端口访问 web ui管理界面: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 任意付费套餐即可配置固定二级子域名彻底告别域名频繁变化的烦恼。下面我们来看看如何操作。首先进入官网的预留页面https://dashboard.cpolar.com/reserved然后选择预留菜单即可看到保留二级子域名项填写其中的地区、名称、描述可不填项然后点击保留按钮操作步骤图如下列表中显示了一条已保留的二级子域名记录地区显示为China Top。二级域名显示为easynvr。注二级域名是唯一的每个账号都不相同请以自己设置的二级域名保留的为主接着进入侧边菜单栏的隧道管理下的隧道列表可以看到名为easynvr的隧道点击编辑按钮进入编辑页面修改域名类型为二级子域名然后填写前面配置好的子域名点击更新按钮接着来到状态菜单下的在线隧道列表可以看到隧道名称为easynvr的公网地址已经变更为二级子域名固定域名主体及后缀的形式了这里以https访问测试一下访问成功让我们再进行登录测试一下成功登录以后你不管是去公司上班还是外出旅游都可以通过这个固定的公网地址随时随地打开 EasyNVR不仅能实时查看家里的情况还能随意回放之前的录像。而且这个地址是永久固定的不用再担心过段时间就变了是不是超级方便总结完成部署以后小米摄像头原有的硬件和网络连接不需要改变。Go2RTC负责解决视频流兼容问题EasyNVR负责录像与回放飞牛NAS则承担最终的文件存储。相较多个中转容器组成的方案双容器结构更适合N1盒子和低配NAS。组件更少内存占用和故障排查难度也会下降但实际运行效果仍取决于摄像头数量、分辨率、码率和存储设备性能。Go2RTC配置中涉及小米账号信息、Token和RTSP认证密码这些内容都属于敏感凭据。示例中的默认账号和密码应立即替换配置文件不能上传到公开仓库也不要在截图中展示完整Token。EasyNVR开始持续录像后应根据硬盘容量设置合理的保留周期。所谓本地存储并不等于无限保存如果不设置循环清理策略录像文件最终仍会占满磁盘影响NAS上的其他服务。通过 cpolar 映射EasyNVR页面后可以在外部网络查看录像。随机地址适合临时测试固定二级子域名更适合长期使用但监控页面涉及家庭成员和住宅环境不应公开传播。Go2RTC负责把小米私有视频流转换成标准协议EasyNVR负责集中录像和回放cpolar负责补上远程访问入口。整套方案的核心价值是用较低的硬件开销把摄像头录像留在自己的存储设备中同时保留随时查看和长期维护的能力。
返回列表