烧卡!烧卡!又烧了!如何将摄像头优雅的接入NAS?
当我想要打开监控回看一下历史,结果发现又是“获取视频文件失败”,打开存储卡页面,又是“异常”二字,说真的,我都不知道在我家这监控上到底烧了多少张卡。存储价格没涨之前,十几二十几一张的SD卡毫不心疼,涨价之后一张卡来到一百多,这还是多少有点肉疼的!

那咱们作为NAS玩家,能不能将家里的监控设备接入NAS呢?可以肯定是可以的,并且方案还不止一种,下面咱们就分情况来看看如何将家里的监控摄像头接入NAS。
这里我们将摄像头分为两种类型:一种是支持Onvif标准协议,一种是支持RTSC、WebRTC、HomeKit、FFmpeg等协议,通过Go2RTC接入。
那咱们先来看到Onvif标准协议,我这里使用的NAS是极空间的Z4 Pro+性能版,支持SSD扩展,可以将监控的文件直接写入SSD中,这样机械盘就能进入休眠状态。
Onvif标准协议接入

如果是采用Onvif标准协议接入的,就能直接在极空间的应用商店中下载安装监控中心这个应用,这个应用直接就支持Onvif标准协议的摄像头接入。

确保我们的摄像头与NAS在同一个局域网下,打开监控中心,点击添加摄像头,这时就会自动开始扫描同一个局域网下的摄像头。我这里用的是TP-Link支持Onvif协议的摄像头,这里就直接显示出来了。

选择摄像头之后进入下一步,这时会进入到一个验证页面。这里需要输入咱们摄像头的用户名以及密码。我这里以TP-Link的摄像头为例,进入查看设备基本信息,这里能看到用户名,密码是在添加摄像头时就要求你填写的,这里还有端口之类的信息,如果与极空间监控中心的信息不一致,也需要自行修改一下。

点一下测试,显示测试成功就行。如果有固态存储空间的,记得可以修改一下这里的录像存储位置~

点击摄像头预览框就能播放视频画面,同时也能控制云台方向。

在录像标签这,也能查看以及下载转录的文件。

还能设置监控的权限。
但极空间自带的监控中心仅支持采用Onvif协议的摄像头,那如果是像小米或者其它不支持Onvif协议的摄像头,就只能采用Go2RTC+EasyNVR的方案了。
Go2RTC+EasyNVR
Go2RTC是一款支持摄像头流媒体应用,支持RTSP、WebRTC、HomeKit、FFmpeg、RTMP等多种协议,可以说是专门为实现低延迟高质量视频流而设计的。
那这里在极空间上我们采用Docker的形式进行部署,输入以下代码:
version: '3.8'
services:
go2rtc:
image: ghcr.io/alexxit/go2rtc:latest
container_name: go2rtc
network_mode: host # 使用宿主机网络
restart: unless-stopped
tmpfs:
- /config # 在内存中创建临时目录 /config
command: >
/bin/sh -c "
echo 'log:
level: info
api:
listen: :1984
rtsp:
listen: :8554
streams:
camera1: rtsp://admin:password@192.168.1.100:554/stream1
' > /config/go2rtc.yaml &&
go2rtc -config /config/go2rtc.yaml
"
volumes:
- 替换为自己的录像存储目录路径:/recordings # 可选:录像存储目录
environment:
- TZ=Asia/Shanghai

等待部署完成后,进入NAS IP+:1984,点击上方菜单栏中的add。

在下方这就能找到xiaomi选项,填入自己的小米账号信息。

完成添加之后这里就能看到小米摄像机的URL,这个URL需要记好,后面咱们会用到的。

点击上方菜单栏中的config。
# =================================================================
# 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
将上方代码中的URL替换成自己的URL,URL后面的代码也需要添加上,完成后点击save&Restart。

完成后进入首页,就能看到添加进来的小米摄像机列表了,点击stream就能播放。但比较糟糕的是我手上两台小米摄像机均不支持Go2RTC,在使用这项功能之前,建议先询问一下客服自己购买的小米摄像机支不支持这项功能。
那既然我手上的小米摄像机不支持,咱们再来看看TP-Link通过Onvif协议如何与Go2RTC链接。

同样的点击上方菜单栏的add,下面这有个Onvif的选项卡,输入摄像头的IP就能检测到,同样也是记录好这个URL。
api:
listen: ":1984"
username: admin
password: "password"
rtsp:
listen: ":8554"
username: admin
password: "password"
streams:
tp_link_44aw:
- "rtsp://admin:你的密码@192.168.5.30:554/stream1?proto=Onvif"
# 如果播放黑屏,取消下面这行的注释尝试转码
# - "ffmpeg:tp_link_44aw#video=h264"
粘贴这一段代码,注意将admin:后面的你的密码替换成自己的摄像头的密码,点击save&Restart。

在首页同样点击stream就能看到当前连接的摄像头的画面了。
可是Go2RTC只是观看视频,那如何才能将视频保存下来呢?那这里就还需要用到EasyNVR这个应用了。
version: "3.8"
services:
easynvr:
image: registry.cn-shanghai.aliyuncs.com/rustc/easynvr_amd64:latest # 根据架构选择
container_name: EasyNVR
restart: always
# 注释掉 host 网络模式(如果不使用 host)
# network_mode: host
# 改用 bridge 模式,并手动映射端口
ports:
# Web 管理端口(若 10000 冲突,可改为其他,如 10001)
- "10001:10000/tcp" # 将宿主机 10001 映射到容器 10000
- "10010:10010/tcp"
- "28080:28080/tcp"
- "24433:24433/tcp"
- "25544:25544/tcp"
- "21930:21930/tcp"
- "15060:15060/tcp"
- "15060:15060/udp"
- "24888:24888/tcp"
- "24888:24888/udp"
# 动态端口范围(若占用多,可整体偏移,但通常无需修改)
- "30000-30500:30000-30500/tcp"
- "30000-30500:30000-30500/udp"
environment:
- TZ=Asia/Shanghai # 设置时区
logging:
options:
max-size: "50M" # 限制单个日志文件大小为50MB
deploy:
resources:
limits:
# 根据你的NAS内存大小调整,例如限制最大使用4G内存
memory: 4g
volumes:
# 将配置文件、日志等持久化到本地
- ./configs:/app/configs
- ./logs:/app/logs
- ./temporary:/app/temporary
# 录像存储位置:请将 ./recordings 替换为你希望存储录像的NAS路径
- ./recordings:/app/r
- ./stream:/app/stream
复制上方的代码,粘贴到极空间的compose页面,注意修改一下相关路径。(注意,极空间的SSH端口号默认为10000,如果使用host模式,可能会与极空间默认SSH端口号产生冲突,记得修改一下端口映射,我们这里就把原本的10000改成了10001)

进入easynvr初始化页面,注意刚进入时会让你登录账号,这个不需要在意,直接点击登录就行。

最后一步是设定账号密码,中间的过程可以一直点击下一步。

进入设备列表,点击添加,填入摄像头的名称,以及咱们之前的RTSP协议地址。

这样就能看到设备已经被添加进来了,并且也是显示在线,也能看到缩略图。

最后将这里的录像计划改为每天,这样就会一直录制啦。(可以参照这种方式添加支持Go2RTC的小米摄像头,我这就用TP-Link的摄像头进行演示)

进入到录像回放中,就能看到当前摄像机的回放记录了。

点击旁边的查看录像,就能跳转已记录的录像画面时间线。

easynvr的这个回放画面还是不错的,也会有相关离线、上线等状态的记录。
那TP-Link的摄像头原生就支持Onvif协议,其实添加起来更为简单

在添加里面,直接选择Onvif选项卡,这里填入摄像头的IP、端口号、用户名以及密码,就能直接将摄像头添加进来。

设置录像规则等等也就跟上面一样,咱们就不多说。(如果是支持Onvif协议的摄像机,也可以直接在easynvr里面通过Onvif协议连接,不需要Go2RCT)

那想要在外网下访问呢,其实也很简单。打开极空间的Docker界面,这里有个远程访问的链接,直接打开就能在外网下进行访问。

也能通过极空间客户端内的远程访问或者浏览器进行外网下访问。
诶,那有的小伙伴可能要说了,你这要不是支持Go2RCT的,要不是支持Onvif协议的,那你家那种啥都不支持的该怎么办呢?
没办法咯,只能默默打开米家APP进行查看实时视频;不过小米还是给我们留了一手,部分小米摄像机还支持SMB1协议,我们可以通过SMB协议将录像文件转存到NAS中。


通过这种形式也能将录像文件转存到nas文件夹中,不过还是建议,以后选择摄像头选支持Go2RTC或者支持Onvif标准协议的。
那么OK,以上就是本篇文章的全部内容
希望对你有所帮助
让我们下篇文章
再见
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
