这篇文章详细记录了如何处理树莓派视频流,快速搭建一个网络上摄像头服务器,通过网页实时查看摄像头拍到的视频。
如果你正在寻找更多的监控系统,可以看看树莓派安防监控教程,因为它有成熟的网络视频流,运动检测,记录和多摄像头功能。本教程标记为中级,因为它可能具有挑战性,特别是当你的硬件与本教程中使用的版本不同时。如果你发现你不能让这个教程工作,那么上面链接的安防摄像头解决方案就容易得多。
设备清单
以下是需要完成本教程的一些设备,点击链接可直达特别优惠购买。
建议:
树莓派摄像头或USB网络摄像头任选其一
可选:
如何设置Raspberry Pi网络摄像头服务器
首先,需要将Raspbian安装到Raspberry Pi上。如果你还没有安装,那么请查看我的关于安装NOOBs Raspberry Pi的指南,它将带你一步一步完成系统安装。
在本教程中,使用一个名为Motion的软件包,如果你想了解更多关于它的信息,你可以查看他们的网站Motion。由于最新版本的Raspbian缺少Motion所需的依赖性,需要安装一个不同的预编译版本。Motioneye的包维护者(现任:Mr Dave |前任:Calin Crisan)提供了一个包含所需要的一切的包,而且它在树莓派上运行得很好。
1. 使用终端控制树莓派,所以打开Pi上的终端或通过SSH连接到它。
2. 首先,更新Raspberry Pi,让软件保持最新状态。
sudo apt-get update
sudo apt-get upgrade
根据使用的Raspbian版本,需要做一些不同的步骤。在本教程中,我将安装Raspbian Buster的Motion。
3. 首先,安装以下软件包。这个命令在Raspbian Buster的完整版和精简版上都可以使用。
sudo apt install autoconf automake build-essential pkgconf libtool git libzip-dev libjpeg-dev gettext libmicrohttpd-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libavdevice-dev default-libmysqlclient-dev libpq-dev libsqlite3-dev libwebp-dev
4.接下来,从GitHub上下载Raspbian Buster的Motion deb文件,并使用dpkg命令进行安装。
sudo wget https://github.com/Motion-Project/motion/releases/download/release-4.3.1/pi_buster_motion_4.3.1-1_armhf.deb
sudo dpkg -i pi_buster_motion_4.3.1-1_armhf.deb
这就是在配置Motion之前需要做的所有事情。
配置motion
1. 现在需要对配置文件 motion.conf 进行一些编辑。
sudo nano /etc/motion/motion.conf
2. 找出以下几行,并更新为:
daemon on stream_localhost off
注意:如果有运动物体出现在画面中视频变的很卡的话,修改下面两行配置。
picture_output off movie_output off
可选(不要写#后面的文字,那是注释)
stream_maxrate 100 # 这个变化将允许实时流媒体,但需要更多的带宽和资源。需要添加到配置文件中,默认为1。 framerate 100 # 更改此选项将允许每秒捕获100帧,使视频更加流畅,默认为50帧。 width 640 #这一行改变图像显示的宽度,默认为640。 height 480 #这个选项可以改变图片的显示高度,默认为480。
改变这些选项会极大地影响性能,你可能需要尝试着调调参数才能获得最佳效果。
3. 现在需要设置守护进程。
首先,需要编辑motion
文件。
sudo nano /etc/default/motion
4. 找到以下一行,并将其改为:
start_motion_daemon=yes
5. 完成后,只需按ctrl+x再按y键保存并退出。
6. 现在确保摄像机已经连接好,并运行以下行。
sudo service motion start
7. 如果需要停止服务,只需运行以下命令。
sudo service motion stop
8. 应该可以在Pi的IP地址上查看网络摄像头视频了,在浏览器中转到以下地址。
192.168.1.103:8081
9. 如果网页没有加载,请尝试重新启动服务。
sudo service motion restart
10. 如果你使用的是Raspberry Pi相机,还需要做一些额外的步骤,下面会讲到。
在这里,有一个完全工作的Raspberry Pi网络摄像头服务器,可以放置在任何你想要的地方(鉴于它是在WiFi范围内),并能够通过网络浏览器查看视频。如果想允许外部访问相机,那么请查看我在本教程底部的说明。
树莓派相机的额外步骤
如果你想使用树莓派相机模块,那么需要做一些额外的步骤来设置它。
安装硬件
1. 首先,去CSI(相机串行接口)带状电缆插槽上的Pi,用两根手指在连接器的两侧向上拉。这种技术现在应该打开连接器,现在插入带状电缆的金属引线朝向远离以太网端口。
2. 一旦你把它排好,轻轻地按下连接器,现在电缆应该被锁定在一个地方。
配置软件
为了让Raspberry Pi相机与Motion一起工作,需要做一些额外的步骤。
1. 首先确保摄像机已在 raspi 配置中打开,输入以下命令,然后启用摄像机(在接口选项中找到),完成此操作后,需要重新启动系统。
sudo raspi-config
2. 输入以下行以将摄像机连接到模块。在执行此行之前,请确保摄像机连接正确,否则会出现错误。
sudo modprobe bcm2835-v4l2
3. 另外,以下过程也应该可以。首先,打开模块文件,输入以下一行。
sudo nano /etc/modules
4. 在文件底部输入以下一行,如果它还不存在的话。完成后,按ctrl+x再按y键保存并退出。
bcm2835-v4l2
5. 现在重新启动Pi。
sudo reboot
6. 最后应该可以通过访问8081端口上的Pi的IP地址来访问Raspberry Pi网络摄像头了。
192.168.1.103:8081
现在应该有一个完全正常工作的Raspberry Pi摄像机服务器,可以在本地网络中访问。如果想允许外部访问摄像机,那么请按照下面的说明进行操作。
保存动态录像和照片
在默认情况下,你很可能会遇到保存由运动触发的照片和视频的权限问题。下面来介绍如何设置让一切正常工作。
1. 首先,为照片和视频做一个新的目录。
sudo mkdir /motion
2. 接下来,需要更改motion文件夹的组,让motion有权限写入,给组读、写、执行权限。
sudo chgrp motion /motion
sudo chmod g+rwx /motion
3. 现在需要回到motion
配置文件中,将target_dir改为新的目录。首先,打开文件。
sudo nano /etc/motion/motion.conf
4. 更新target_dir行,使其看起来像下面这行。确保将行首的;删除。
target_dir /motion
5. 接下来,重启motion
服务,重新加载配置文件。
sudo service motion restart
6. 现在,只要摄像机检测到运动,就应该将其保存到我上面指定的文件夹中,可以运行以下命令进行检查。
ls /motion
请务必查看我的Linux权限指南,了解更多关于正确设置权限的信息。
设置外部访问
为了启用外部访问Raspberry Pi网络摄像头服务器,需要更改路由器上的一些设置。然而,路由器的设置千差万别,所以你可能需要查找你的路由器品牌的说明。请注意,开放端口上外网是有安全风险的。如果需要更深入的指导,那么一定要看看我的指南,如何设置Raspberry Pi端口转发和动态DNS。
下面的步骤是我在AC1750 TP-Link路由器上做的操作。
1. 进入路由器管理页面(通常是192.168.1.1或192.168.254)。
2. 输入用户名和密码。默认情况下一般是admin和admin。
3. 进入后进入转发->虚拟服务器,然后点击添加新的。
4. 在这里进入。
- 服务端口:这里是48461
- IP地址:192.168.1.103(您的Pi的地址)。192.168.1.103 (你的Pi的地址)
- 内部端口:我们希望这个端口和网络摄像头服务器的端口一样 所以把它设为8081端口
- 议定书:全部
- 状态:已启用
5. 这些设置将把所有指向端口48461的流量路由到网络摄像头服务器。例如:192.168.1.103:8081。
如果你无法连接到本地网络之外,那么可以尝试以下方法。
- 检查你的路由器设置,并确认它们是正确的。
- 检查你的IP是否有变化,有些互联网服务提供商会给你提供动态IP而不是静态IP。
- 重新启动路由器。
希望你喜欢这个教程,如何建立一个树莓派网络摄像头服务器。
欢迎转载,请留下出处链接:Labno3 » 树莓派视频流,详细步骤使用Motion搭建网络摄像头服务器