如何借助Motion操控Linux监控摄像头

译文
运维 系统运维 Linux
如果你想要一款比Zoneminder更简单一点、更轻巧的工具来操控监控摄像头,那不妨试一下Motion。

Motion(http://www.lavrsen.dk/foswiki/bin/view/Motion/)是一款小巧、轻型但又功能强大的应用软件,可以用来在Linux上操控监控摄像头。它能够与任何支持Linux的摄像头协同运行,包括所有的V4L网络摄像头、许多IP摄像头以及安迅士(Axis)摄像头,它还可以控制平移和倾斜功能。Motion可以录制使用JPEG、PPM和MPEG等格式的短片和快照,你可以在Web浏览器中远程查看这些视频,这要归功于Motion的内置HTTP服务器。它将图像文件存储在你所选择的一个目录里,它也不需要数据库,不过它支持MySQL和PostgreSQL,如果你的确想要使用其中一个的话。

[[116366]] 

 

图1:Foscam网络摄像头监视着进入本人地盘的所有人。

首先不妨看一下如何使用我那只很可靠的Foscam FI8905W(图1),借助Motion,让IP摄像头工作起来,然后我们将添加一只USB网络摄像头。

安装过程在Debian和Debian衍生版本上很容易,因为Motion已包含在标准软件库当中。所以,你只需要运行apt-get install motion。你还需要libav-tools,这是ffmpeg的一个分支。许多月以前,Debian丢弃了ffmpeg,以libav-tools取而代之。在其他发行版上,查阅下载页面(http://www.lavrsen.dk/foswiki/bin/view/Motion/DownloadFiles)和安装指南(http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideInstallation),即可了解相关的操作说明。另外大多数发行版仍包括ffmpeg。

安装程序应该会创建一个motion群组和用户,并且将motion用户添加到video群组。要是安装程序没有创建motion群组和用户,那么你必须自行创建。还要自行添加到video群组,才能避开烦人的权限问题。

现在运行motion,看看它是否管用:

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

它会显示好多好多行,直到你看到如下内容:

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

将你的Web浏览器指向localhost:8081,你会看到一幅灰色图像:

 

图2:如果Motion找不到摄像头,就会显示灰色图像。

这很好,因为这表明Motion已正确安装;你要做的就是对它进行配置。按Ctrl+C组合键停止运行。然后,在你的主目录下创建一个.motion目录,将默认配置文件拷贝到该目录中,并将所有权改成归你所有:

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

你还需要用来存储motion所拍摄图像的一个目录:

  1. ~$ mkdir motion-images 

当你启动Motion后,它会寻找配置文件,先在当前目录下寻找,然后在~/.motion下寻找,最后在/etc/motion下寻找。现在,编辑你的~/.motion/motion.conf文件――该例子包括基本配置以及与我的Foscam IP摄像头相关的那些行:

  1. # 在守护程序(后台)模式下启动,打2开终端(默认:off)  
  2. daemon on  
  3. # 检测到运动后,输出“正常”图片(默认:on)  
  4. [...]  
  5. output_normal off  
  6. # 存储进程编号的文件,又叫pid文件。(默认:未定义)。  
  7. process_id_file /var/run/motion/motion.pid  
  8. # 图像宽度(像素)。有效范围:取决于摄像头,默认:352个像素  
  9. width 640  
  10. # 图像高度(像素)。有效范围:取决于摄像头,默认:288个像素  
  11. height 480  
  12. # 每秒拍摄的最大帧数量。  
  13. # 有效范围:2-100。默认:100(几乎没有限制)。  
  14. framerate 7  
  15. # 如果你使用网络摄像头要使用的URL,尺寸将自动检测(包括http://、ftp://或file:///)  
  16. # 必须是返回单JPEG图片或原始MJPEG流的URL。默认:未定义  
  17. netcam_url value http://http://192.168.10.250:8080/videostream.cgi  
  18. # 网络摄像头的用户名和密码(只要在需要时)。默认:未定义  
  19. # 语法是用户:密码  
  20. netcam_userpass admin:mypassword  
  21. # 存储图片和短片的目标基本目录  
  22. # 推荐使用的绝对路径。(默认值:当前工作目录)  
  23. target_dir /home/carla/motion-images  
  24. # ffmpeg用于视频压缩的编解码器。  
  25. [...]  
  26. ffmpeg_video_codec mpeg4 

你需要创建用来存储PID文件的目录,因为它在motion.conf中表明:

  1. $ sudo mkdir /var/run/motion 

现在再试着启动它:

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

到目前为止很好,现在再试一下localhost:8081:

[[116367]] 

 

图3:Motion拍到了我家的私人车道。

看好了,那是本人的私人车道。现在要是有人过来,就会发出警报,那样我可以开门放狗。在你的摄像头前跑动,就能触发运动检测系统;等你回来后,图像目录里面应该有一些.avi短片。你还应该会在localhost:8080找到一个简单的Motion控制面板。

IP摄像头设置

《如何在Linux上借助ZoneMinder操控Linux监控摄像头?(第1部分)》一文较为详细地介绍了如何设置你的摄像头,详见http://www.linux.com/learn/tutorials/762058-how-to-operate-your-spycams-with-zoneminder-on-linux-part-1-。在最初的设置过程,你必须遵守摄像头厂商的操作说明,比如输入登录资料和密码,以及设定IP地址。你可以还有其他选项,比如帧大小、运动敏感度以及色彩深度或黑白。

获得准确的netcam_url有时很麻烦。就我的Foscam而言,我在火狐中调出了控制面板,鼠标右击图像(图4),然后左击View Image Info(查看图像信息)。这打开了类似图5的画面,它显示了视频流的准确URL。在Chrome浏览器中,使用“Inspect element”(检查元素)。

 

 

图4:火狐中的Foscam控制面板。

 

 

图5:找到摄像头视频流的URL。

微调配置值

你可以在配置文件中调整各种各样的参数,比如图像尺寸、图像质量、帧速率、运动敏感度、帧中所选择区域的更高敏感度、文件路径、HTTP服务器和时间戳格式。《Motion指南:按字母顺序排列的选项参考手册》给出了每个选项的详细信息,详见http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideAlphabeticalOptionReferenceManual。记得使你的Motion设置与摄像头控制面板中的设置相一致,如果摄像头有控制面板的话。

USB摄像头

任何支持V4l的USB网络摄像头应该不需要费太大的劲就能工作。视频设备将是/dev/video0。只有摄像头是连接到你电脑的目录,/dev/video0才会出现。这是我那只罗技网络摄像头的基本的示例配置:

  1. videodevice /dev/video0  
  2. width 640  
  3. height 480  
  4. framerate 24  
  5. output_normal off  
  6. ffmpeg_video_codec mpeg4  
  7. target_dir /home/carla/motion 

同样要记住:诸如帧速率和帧尺寸之类的设置都依赖你的摄像头支持的标准。

让Motion在后台运行

一旦你搞定了一切,让Motion作为一个后台程序运行,为此只要编辑/etc/default/motion,然后将start_motion_daemon=no改成start_motion_daemon=yes。现在,当你开启电脑时,Motion就会自动启动,你可以像对待其他任何后台程序那样启动和停止它了。

控制多只摄像头

Motion可以轻松管理多只摄像头――你只要为每只摄像头分配各自的配置文件,命名为thread1.conf、 thread1.conf,以此类推。daemon on等常见选项和文件路径仍需要你的主motion.conf。然后每个“线程”文件都有专门针对每一只摄像头的配置。
 

英文:http://www.linux.com/learn/tutorials/780055-how-to-operate-linux-spycams-with-motion

责任编辑:林师授 来源: 51CTO
相关推荐

2021-03-11 10:21:55

特斯拉黑客网络攻击

2011-09-08 13:53:20

Linux摄像头

2018-06-20 11:54:54

2009-06-17 11:52:01

Linux

2016-03-31 14:58:18

2023-03-22 09:05:48

Linux旧相机网络摄像头

2020-06-04 10:59:10

JavaScript开发技术

2013-03-21 09:56:09

2017-06-20 11:45:52

2011-04-25 09:16:10

Windows 8

2012-06-23 20:13:44

HTML5

2023-03-24 10:28:27

2022-05-12 09:25:19

Python播放视频摄像头

2023-01-13 08:00:00

人工智能摄像头人脸识别

2009-08-21 17:24:18

C#控制摄像头

2012-06-05 11:59:25

2023-11-06 12:57:03

2012-05-03 08:08:34

Linux摄像头

2014-09-01 10:56:52

WP8

2022-08-17 15:42:44

Windows 11Android 手机摄像头
点赞
收藏

51CTO技术栈公众号