树莓派搭建网络视频实时监控系统
前言在GitHub上发现一个好玩的项目,不用安装其它任何依赖包,只要运行一个Python脚本就可以在局域网构建一个视频监控系统 。果断试了一下,确实挺好玩的,现在分享给大家 。

文章插图
搭建方法1. 硬件准备首先你得有一个树莓派CSI接口的摄像头和一个装好系统的树莓派 。如何安装系统请参考我之前的教程如何给树莓派写入镜像

文章插图

文章插图
如果你之前已经使用过摄像头接口,直接看跳到下一步 。如果还没有的用过的话,树莓派摄像头接口可能还没有打开,这是树莓派打开摄像头接口的方法: (1) 命令行输入: sudo raspi-config (2) 选中 InterfacingOptions,按 Enter进入子菜单

文章插图
(3) 选中 Camera,按 Enter打开摄像头接口,确认后即可

文章插图
【树莓派搭建网络视频实时监控系统】
2. 接入摄像头给树莓派接上摄像头很容易 。确保树莓派已经关机的情况下,用指甲轻轻打开CSI接口卡扣,将连接带有金属接触面的方向对准CSI接口黑色的一面,再扣紧卡扣就可以了 。

文章插图
3. 找到树莓派的IP地址在树莓派终端输入命令 ipconfig,wlan0即为树莓派的ip地址,这里是 192.168.123.126

文章插图
4. 下载脚本GitHub项目地址:(
https://github.com/RuiSantosdotme/Random-Nerd-Tutorials/blob/master/Projects/rpicamerasurveillance_system.py)
# Web streaming example# Source code from the official PiCamera package# http://picamera.readthedocs.io/en/latest/recipes2.html#web-streamingimport ioimport picameraimport loggingimport socketserverfrom threading import Conditionfrom http import serverPAGE="""<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><head><title>Raspberry Pi - Surveillance Camera</title></head><body><center><h1>Raspberry Pi - Surveillance Camera</h1></center><center><h1>小雨的家 Xiaoyu's Home</h1></center><center><img src=https://www.isolves.com/it/wl/js/2021-03-16/"stream.mjpg" width="640" height="480">"""class StreamingOutput(object):def __init__(self):self.frame = Noneself.buffer = io.BytesIO()self.condition = Condition()def write(self, buf):if buf.startswith(b'xffxd8'):# New frame, copy the existing buffer's content and notify all# clients it's availableself.buffer.truncate()with self.condition:self.frame = self.buffer.getvalue()self.condition.notify_all()self.buffer.seek(0)return self.buffer.write(buf)class StreamingHandler(server.BaseHTTPRequestHandler):def do_GET(self):if self.path == '/':self.send_response(301)self.send_header('Location', '/index.html')self.end_headers()elif self.path == '/index.html':content = PAGE.encode('utf-8')self.send_response(200)self.send_header('Content-Type', 'text/html')self.send_header('Content-Length', len(content))self.end_headers()self.wfile.write(content)elif self.path == '/stream.mjpg':self.send_response(200)self.send_header('Age', 0)self.send_header('Cache-Control', 'no-cache, private')self.send_header('Pragma', 'no-cache')self.send_header('Content-Type', 'multipart/x-mixed-replace; boundary=FRAME')self.end_headers()try:while True:with output.condition:output.condition.wait()frame = output.frameself.wfile.write(b'--FRAMErn')self.send_header('Content-Type', 'image/jpeg')self.send_header('Content-Length', len(frame))self.end_headers()self.wfile.write(frame)self.wfile.write(b'rn')except Exception as e:logging.warning('Removed streaming client %s: %s',self.client_address, str(e))else:self.send_error(404)self.end_headers()class StreamingServer(socketserver.ThreadingMixIn, server.HTTPServer):allow_reuse_address = Truedaemon_threads = Truewith picamera.PiCamera(resolution='640x480', framerate=24) as camera:output = StreamingOutput()#Uncomment the next line to change your Pi's Camera rotation (in degrees)#camera.rotation = 90camera.start_recording(output, format='mjpeg')try:address = ('', 8000)server = StreamingServer(address, StreamingHandler)server.serve_forever()finally:camera.stop_recording()
5. 写入脚本将上面的代码保存一个名为 rpi.py的Python文件,通过smb传输的方式,将代码上传至树莓派任意用户文件夹中,这里我们可以上传到树莓派 ~/swift文件夹下 。
推荐阅读
- 从什么时候开始搭建小程序变得这么简单了?
- 5分钟搭建强大又好用的深度学习环境
- 从零开始的微服务搭建之路
- 运维人员如何搭建堡垒机?
- CentOS系统下PXE服务器的搭建与部署
- 5分钟搭建公网https网页文件服务器,免费权威TLS证书
- 什么是树莓派电脑,树莓派可以做什么
- 基于STF/ATXServer2 移动设备管理平台的搭建
- 开源云盘利器:Nextcloud 21私有云盘搭建
- 乐视和贾跃亭就一点关系没有了吗?贾跃亭 酷派