树莓派摄像头实时监控

树莓派摄像头实时监控

🗨

首先安装usb摄像头,连接后使用lsusb命令查看

pi@raspberrypi4 ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 006: ID 0c45:62f0 Microdia
Bus 001 Device 005: ID 0bda:8179 Realtek Semiconductor Corp.

 

已经看到摄像头了,代号为0c45:62f0 Microdia的设备就是摄像头,然后用命令

pi@raspberrypi4 ~ $ ls /dev

惊喜的看到设备里有video0,这说明系统自带我摄像头的驱动,已经驱动好了,省的折腾驱动了。

然后,更新下系统

pi@raspberrypi4 ~ $ sudo apt-get update

最后,安装软件motion

pi@raspberrypi4 ~ $sudo apt-get install motion

配置motion,具体方法为修改/etc/motion/motion.conf 文件,将Daemon = off 改为on,webcam_localhost = on改为off,默认的监控端口为8081,改不改都可。为了方便,设置开机自动运行,方法为更改/etc/default/motion文件,把 start_motion_daemon=no改为yes。

重启树莓派

pi@raspberrypi4 ~ $ sudo reboot

重启后就可以看看效果了,在浏览器输入 树莓派IP:端口就可以了。

摄像头正对我楼下自行车棚的门口,有人走动的话,会实时拍照的,哈哈。

暂时就搞到这里,下一步考虑将拍摄的照片同步到网络存储,比如dropbox,Dbank等等。

监控网址就不公布了,貌似私自架设是违法的,O(∩_∩)O

--------------------------------------------------------------------

记得在Raspibian中的系统配置UI里,enable camera:

1 sudo raspi-config

然后就可以测试下摄像头了。一切木有问题后即可准备通过网络远程监控,其他参数直接看命令自带的帮助即可。

1 # 这个是测试静态图片
2 raspistill -o image.jpg
3 # 这个是测试10秒短片
4 raspivid -o video.h264

简单说一下原理,你的windows电脑作为接收器,通过nc和mplayer软件持续监听接收缓存来自网络上的视频信号(流);而树莓派作为发送者,只要持续的将视频信号发送到某个ip上即可。这个方案也有不好的地方,就是必须在树莓派上通过命令行来指定接受者。

首先windows上下载这两个东西,建议把两个软件的内容都解压缩到一个文件夹下面。

前往下载页面: mplayer-svn-36251.7z

前往下载页面: nc111nt.zip

然后在这个文件夹里整一个.bat文件,随便叫啥好了,内容如下,啥都不用改:

1 nc.exe -L -p 5001 | mplayer.exe -fps 31 -cache 2048 -

双击执行这个文件,然后在树莓派上执行:

1 raspivid -t 999999 -o - | nc [你的IP] 5001

搞定!就是这么简单。这样你就能在windows上局域网里看到监控画面了。对于linux或者osx上的监视方法,参考

-------------------------------------------------------------------------------------------------------------------------------

树莓pi(或者说linux)的兼容性不错,插上摄像头之后,使用lsusb查看usb设备

Bus 001 Device 004: ID eb1a:2571 eMpIA Technology, Inc. M035 Compact Web Cam

接下来安装软件motion(可以获取摄像头的数据,生成图片或发送数据流到http)

sudo apt-get udpate
sudo apt-get upgrade
sudo apt-get install motion

修改motion的配置文件 /etc/motion/motion.conf

daemon off 变为 daemon on,以daemon方式运行

webcam_localhost on 变为 webcam_localhost off,意为不只是对本地采集,这样才可以使用http查看

其他参数如分辨率,截图间隔时间等可根据自己的情况调整。

启动软件前将/etc/default/motion的start_motion_daemon项变为yes

然后启动motion

/etc/init.d/motion start

之后打开http://ip:8081即可。不想使用8081的可以去将/etc/motion/motion.conf中的端口改为需要的端口。

----------------------------------------------------------------------------------------------------------------------------


Motion 是一个相当轻量级,但却能够在 Linux 上运行监控摄像头的应用。它可以和任何支持 Linux 的摄像头一起工作,包括所有 V4L(译者注:Video4Linux,Linux内核中关于视频设备的API接口)网络摄像头,许多IP网络摄像头和 Axis 摄像头(译者注:一个日本精工品牌)。Motion 还能够控制云台功能。Motion 以 JPEG、PPM 和 MPEG 格式存储影像和快照。由于 Motion 内置了 Http 服务器,你可以在网络浏览器中进行远程观看。虽然 Motion 支持 MySQL 和 PostgreSQL 数据库,但是它仍然可以在不需要数据库的情况下,将图片文件存储在你选择的目录。

 

首先让我们看看如何让一台我信赖的 Foscam FI8905W 网络摄像头(图1)与 Motion 一起工作,接着我们会增加一台 USB 网络摄像头。

在 Debian 及其衍生版本上安装 Motion 非常容易,因为它本身已经包含了所有必需的软件库。因此你所需要的仅仅是运行apt-get install motion。你还需要 libav-tools,它是一个 ffmpeg 分支。数月之前,Debian用libav-tools取代了了ffmpeg(如果你想了解具体细节,可以看看Is FFmpeg missing from the official repositories in 14.04? )。在其他Linux发行版上,查看下载页面和安装向导,能够找到相关的指导。许多其他发行版上依旧使用ffmpeg。

安装程序会创建一个motion用户,并将motion用户添加到video组。如果程序没有创建motion用户,你需要自己创建一个。为避免权限问题,还要把你自己加到video组中。

现在运行motion看看它是否工作:

 

$ sudo motion
[0] Processing thread 0 - config file /etc/motion/motion.conf
[0] Motion 3.2.12 Started
[0] ffmpeg LIBAVCODEC_BUILD 3547904 LIBAVFORMAT_BUILD 3544067
[0] Thread 1 is from /etc/motion/motion.conf
[1] Thread 1 started
[0] motion-httpd/3.2.12 running, accepting connections
[1] Failed to open video device /dev/video0: No such file or directory
[0] motion-httpd: waiting for data on port TCP 8080
[1] Could not fetch initial image from camera
[1] Motion continues using width and height from config file(s)
[1] Resizing pre_capture buffer to 1 items
[1] Started stream webcam server in port 8081
[...]

 

这期间会有很多行文字出现,直到你看到下面的内容:

 

[1] Failed to open video device /dev/video0: No such file or directory
[1] Video signal lost - Adding grey image

将你的网络浏览器转到localhost:8081,你将会看到一幅灰色的图像:

 

很好,这意味着Motion安装正确,你接下来要做的所有事情就是配置它。按Ctrl+C停止Motion,然后在你的主目录下创建一个.motion目录,将默认的配置文件复制到这个目录中,并将所有权改为你。

 

~$ mkdir .motion
~$ sudo cp /etc/motion/motion.conf .motion/
~$ sudo chown carla:carla .motion/motion.conf

你还需要一个目录来存储Motion拍下的照片:

 

 

~$ mkdir motion-images

当你启动Motion,它会首先在当前目录下寻找配置文件,其次是~/.motion目录, 最后是/etc/motion目录。现在编辑你的~/.motion/motion.conf文件——这个例子包含了基本的配置,其中几行是关于我的Foscam网络摄像头的。

 

 

# Start in daemon (background) mode and release terminal (default: off)
daemon on
# Output 'normal' pictures when motion is detected (default: on)
[...]
output_normal off
# File to store the process ID, also called pid file. (default: not defined)
process_id_file /var/run/motion/motion.pid 
# Image width (pixels). Valid range: Camera dependent, default: 352
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
height 480
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 7
# URL to use if you are using a network camera, size will be autodetected (incl <a href="http:// ftp://">http:// ftp://</a> or file:///)
# Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined
netcam_url value <a href="http://http://192.168.10.250:8080/videostream.cgi">http://http://192.168.10.250:8080/videostream.cgi</a>
# Username and password for network camera (only if required). Default: not defined
# Syntax is user:password
netcam_userpass admin:mypassword
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /home/carla/motion-images
# Codec to used by ffmpeg for the video compression.
[...]
ffmpeg_video_codec mpeg4

正如motion.conf中所述,你需要创建一个目录来存储PID文件:

 

 

$ sudo mkdir /var/run/motion

现在试着再一次启动Motion:

 

 

$ sudo motion
[0] Processing thread 0 - config file /home/carla/.motion/motion.conf
[0] Motion 3.2.12 Started
[0] Motion going to daemon mode

到目前为止还不错,现在再试试localhost:8081:

 

看起来很棒,浏览器中出现的是我外面的马路。现在如果有访客登门,我会得到足够的警告,所以我能够将不速之客拒之门外了。让你的摄像头动起来,这将会触发移动监测。当你再次回来的时候,就会在你的图片目录中得到一些.avi视频了。你还可以在localhost:8080找到一个简单地Motion控制面板。

网络摄像头设置

在文章《How to Operate Your Spycams with ZoneMinder on Linux (part 1)》里面详细的介绍了摄像头的设置。你必须按照厂商的说明进行一些初始的设定,比如帧尺寸、移动敏感度,以及颜色深度或黑白设定。

得到正确的 netcam_url 有时会是个问题。对于我的 Foscam,我在火狐浏览器中打开它的控制面板,右击图片(图4),然后点击显示图像信息。这将会打开一个(图5)那样的窗口,其中显示了视频流的完整URL。在 Chrome 浏览器中,应该使用 "审查元素"。

调整配置值

你可以任意修改配置文件,比如图片尺寸、图片质量、帧速度、移动敏感度、在选定帧使用更大的敏感度、文件路径、HTTP服务器设定,以及时间戳格式。Motion Guide - Alphabetical Option Reference Manual 给出了相关选项的详细信息。记住如果你的摄像头有设置面板的话,要保持其中的设置于Motion中的一致。

USB摄像头

任何支持V4L的USB网络摄像头可以轻松的和Motion一起工作。这个视频设备将是/dev/video0。当摄像头与计算机直接相连后,/dev/video0将会出现。这个基本的例子配置了我的罗技摄像头:

 

videodevice /dev/video0
width 640
height 480
framerate 24
output_normal off
ffmpeg_video_codec mpeg4
target_dir /home/carla/motion

再一次记住帧速度和尺寸等设定依赖于你的摄像头的支持程度。

 

一旦你做好了所有工作,编辑/etc/default/motion,将start_motion_daemon=no改为start_motion_daemon=yes可以让你的Motion作为后台程序运行。现在Motion将会在每次开机后自动启动,你可以像任何后台进程一样开始和结束Motion。

控制多个摄像头

Motion可以轻松地控制多个摄像头——你所要做的仅仅是给每个摄像头一个配置文件,thread1.conf,thread1.conf等等。你还需要主配置文件motion.conf来进行一些公共配置,比如后台进程开启和文件路径。接下来每一个“线程”文件将会对所指定的摄像头进行配置。


频道:电脑