树莓派视频流,详细步骤使用Motion搭建网络摄像头服务器

这篇文章详细记录了如何处理树莓派视频流,快速搭建一个网络上摄像头服务器,通过网页实时查看摄像头拍到的视频。

Raspberry-Pi-Webcam-Server-V1.jpg

如果你正在寻找更多的监控系统,可以看看树莓派安防监控教程,因为它有成熟的网络视频流,运动检测,记录和多摄像头功能。本教程标记为中级,因为它可能具有挑战性,特别是当你的硬件与本教程中使用的版本不同时。如果你发现你不能让这个教程工作,那么上面链接的安防摄像头解决方案就容易得多。

设备清单

以下是需要完成本教程的一些设备,点击链接可直达特别优惠购买。

建议:

树莓派摄像头或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范围内),并能够通过网络浏览器查看视频。如果想允许外部访问相机,那么请查看我在本教程底部的说明。

raspberry-pi-usb-webcam-in-action-v1.jpg

树莓派相机的额外步骤

如果你想使用树莓派相机模块,那么需要做一些额外的步骤来设置它。

安装硬件

1. 首先,去CSI(相机串行接口)带状电缆插槽上的Pi,用两根手指在连接器的两侧向上拉。这种技术现在应该打开连接器,现在插入带状电缆的金属引线朝向远离以太网端口。

2. 一旦你把它排好,轻轻地按下连接器,现在电缆应该被锁定在一个地方。

clips-and-ribbon-cable.jpg

配置软件

为了让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摄像机服务器,可以在本地网络中访问。如果想允许外部访问摄像机,那么请按照下面的说明进行操作。

raspberry-pi-camera-server-in-action-v1.jpg

保存动态录像和照片

在默认情况下,你很可能会遇到保存由运动触发的照片和视频的权限问题。下面来介绍如何设置让一切正常工作。

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。

router-port-forwarding.png

如果你无法连接到本地网络之外,那么可以尝试以下方法。

  • 检查你的路由器设置,并确认它们是正确的。
  • 检查你的IP是否有变化,有些互联网服务提供商会给你提供动态IP而不是静态IP。
  • 重新启动路由器。

希望你喜欢这个教程,如何建立一个树莓派网络摄像头服务器。

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 树莓派视频流,详细步骤使用Motion搭建网络摄像头服务器

赞 (7)

评论

8+4=