系列文章目录
树莓派5-学习笔记1:系统的烧录与安装
树莓派5-学习笔记2:配置VNC远程桌面
树莓派5-学习笔记3:系统更新与备份
树莓派5-学习笔记4:摄像模块安装、调试与网络摄像头的测试(imx219非原厂)
树莓派5-学习笔记5:树莓派+群辉NAS搭建个人监控中心
树莓派5-学习笔记5:树莓派+群辉NAS搭建个人监控中心
前言
准备过程与希望的效果:
1)树莓派+摄像头;
2)开机就可以自动联网推流;
3)可以实时查看摄像监控画面,监控画面存到NAS上。
1. 树莓派+摄像头
这个已经调试完成,不说了,略过。
调试过程可以看这个链接:https://blog.youkuaiyun.com/sinat_20659395/article/details/146190645?spm=1001.2014.3001.5501
2. 设置开机自动推送视频流,验证下效果
1)先写一个最简单的脚本,就叫camera-udp.sh
#!/bin/bash
rpicam-vid -n -t 0 --libav-format mpegts -o udp://224.0.0.10:8858
2)修改一下权限,让脚本可执行。
chmod +x /home/ixidor/Desktop/camera-udp.sh
在用ls -lh命令确认一下,权限是执行的。
3)创建一个新的systemd服务器,来实现开机启动。名字就叫testscript.service。
sudo nano /etc/systemd/system/testscript.service
接复制粘贴下面内容:
[Unit]
Description=My Custom Script
After=network.target
[Service]
Type=simple
ExecStart=/home/ixidor/Desktop/camera-udp.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
在“ExecStart=”,的后面写上刚才创建的脚本路径就行了。
Ctrl+O保存,Ctrl+X退出。
4)使用systemctl start 命令启动服务
sudo systemctl start testscript.service
5)使用systemctl enable 命令设置服务开机自动启用
sudo systemctl enable testscript.service
6)使用systemctl status 命令检查服务状态
sudo systemctl status testscript.service
检查确认状态都是对的,服务正常启动。
7)重启树莓派进行验证。
- 树莓派直接断电重启;
- 局域网电脑VLC拉流测试:刚才脚本里写得是组播流,ip地址224.0.0.10,端口是8858。
- 局域网内,在电脑上打开VLC,打开网络串流,对话框中输入:udp://@224.0.0.10:8858。
- 可以看到直播画面,测试通过。开机自动推流成功。
3. 换一种方式实现:python+VLC+RTSP推流
因为群辉NAS上自带的SurveillanceStation不支持UDP推流,所以还得换一下实现方式。
1)新建一个python脚本:rtsp_test4.py
import subprocess
import logging
import signal
class VLCRTSPStreamer:
def __init__(self,
resolution=(640,480),
framerate=30,
rtsp_port=8554,
stream_name="stream1"):
self.camera_cmd = [
"rpicam-vid",
"-t", "0",
"-n",
"--width", str(resolution[0]),
"--height", str(resolution[1]),
"--framerate", str(framerate),
"--codec", "H264",
"--libav-format", "mpegts",
"-o", "-"
]
self.vlc_cmd = [
"cvlc",
"stream:///dev/stdin",
"--sout",
f"#rtp{{sdp=rtsp://:{rtsp_port}/{stream_name}}}"
]
self.proc_cam = None
self.proc_vlc = None
self.logger = logging.getLogger("VLC_Streamer")
def start(self):
try:
self.proc_cam = subprocess.Popen(
self.camera_cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
self.proc_vlc = subprocess.Popen(
self.vlc_cmd,
stdin=self.proc_cam.stdout,
stderr=subprocess.PIPE
)
self.logger.info("推流服务已启动 PID: %d", self.proc_vlc.pid)
except Exception as e:
self.logger.error("启动失败: %s", str(e))
def stop(self):
for proc in [self.proc_vlc, self.proc_cam]:
if proc:
proc.send_signal(signal.SIGINT)
proc.wait(timeout=5)
self.logger.info("服务已停止")
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
streamer = VLCRTSPStreamer()
streamer.start()
try:
while True:
pass
except KeyboardInterrupt:
streamer.stop()
记住rtsp端口是:8854; stream_name是:stream1,后面要用。
2)修改一下权限,让脚本可执行。
chmod +x /home/ixidor/Desktop/rtsp_test4.py
3)再创建一个新的systemd服务器,来实现开机启动。这次名字叫testscript-camera.service。
sudo nano /etc/systemd/system/testscript-camera.service
[Unit]
Description=Python RTSP Streamer
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/ixidor/Desktop/rtsp_test4.py
Restart=always
User=ixidor
[Install]
WantedBy=multi-user.target
4)使用systemctl stop 和 disable 命令关闭之前的testscript.servic服务
不然两个服务都要开机调研摄像头进行推流,会发生冲突。需要把之前测试用的那个关掉。
sudo systemctl stop testscript.service
sudo systemctl disable testscript.service
执行完后,再用systemctl status查看状态:
这样就OK了。
5)使用systemctl start 和 enable 命令设置testscript-camera.service开机自动启动。
sudo systemctl start testscript-camera.service
sudo systemctl enable testscript-camera.service
执行完后,再用systemctl status 查看状态:
显示状态正确。
6)在VLC客户端验证一下RTSP拉流状态正常
还是在之前的VLC客户端上,修改网络URL成:rtsp://192.168.31.236:8554/stream1。
可以看到直播画面,测试通过。
重启树莓派,再验证一下开机自动推流,再去确认成功。
4. 配置群辉NAS 的Surveillance Station
1)进入群辉NAS的套件中心
2)安装 Surveillance Station 和 Surveillance Video Extension 套件
3)安装完成后,在主菜单就能看到这个 Surveillance Station 图标了。点击图标进入Surveillance Station 页面。
4)在Surveillance Station 页面内,点击”网络摄像头“图标。
5)添加一个新的网络摄像机。
步骤:
-
点击“新增”;
-
点击“手动添加”;
-
点击“添加摄像机”;
-
名称自己随便起就行,品牌选择:用户自定义;
-
类型选择:RTSP;
-
路径写rtsp://192.168.31.236:8554/stream1,192.168.31.236是树莓派的地址,8554是RTSP端口号。
-
点击“新增”按钮,然后直接“下一步”。
-
如果发现有一个“验证”是告警状态。点击进去看下。
-
这里提示要输入用户账号和密码,因为之前在树莓派上并没有配置,所以直接点“验证”就行。
-
点击“验证”后,可以看到窗口刷新了一下,监控画面出来了,状态也显示正常
-
快速设置,直接下一步。
-
点击完成。
- 添加成功,配置成功。
5. 使用SurveillanceStation的监控中心
1)在SurveillanceStation页面上,直接点击“监控中心”。
2)直接拖拽刚才新建的摄像头就可以了。
**3)可以在对这个摄像头调整一下设置。
回到网络摄像机那里,点击“编辑”。