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

如何借助Motion *** 控Linux监控摄像头,第1张

安装程序应该会创建一个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

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

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

这很好,因为这表明Motion已正确安装;你要做的就是对它进行配置。按Ctrl+C组合键停止运行。然后,在你的主目录下创建一个.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 IP摄像头相关的那些行:

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

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

$ sudo mkdir /var/run/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

在 Linux 中禁用内置摄像头

首先,使用如下命令找到网络摄像头驱动:

$ sudo lsmod | grep uvcvideo

示例输出:

uvcvideo 114688 1

videobuf2_vmalloc 16384 1 uvcvideo

videobuf2_v4l2 28672 1 uvcvideo

videobuf2_common 53248 2 uvcvideo,videobuf2_v4l2

videodev 208896 4 uvcvideo,videobuf2_common,videobuf2_v4l2

media 45056 2 uvcvideo,videodev

usbcore 286720 9 uvcvideo,usbhid,usb_storage,ehci_hcd,ath3k,btusb,uas,ums_realtek,ehci_pci

这里,uvcvideo 是我的网络摄像头驱动。

现在,让我们禁用网络摄像头。

为此,请编辑以下文件(如果文件不存在,只需创建它):

$ sudo nano /etc/modprobe.d/blacklist.conf

添加以下行:

##Disable webcam.

blacklist uvcvideo

##Disable webcam 这行不是必需的。为了便于理解,我添加了它。

保存并退出文件。重启系统以使更改生效。

要验证网络摄像头是否真的被禁用,请打开任何即时通讯程序或网络摄像头软件,如 Cheese 或 Guvcview。你会看到如下的空白屏幕。

Cheese 输出:

Guvcview 输出:

看见了么?网络摄像头被禁用而无法使用。

要启用它,请编辑:

$ sudo nano /etc/modprobe.d/blacklist.conf

注释掉你之前添加的行。

##Disable webcam.

#blacklist uvcvideo

保存并关闭文件。然后,重启计算机以启用网络摄像头。

我觉得linux下无论是USB也好,网卡也好,你的摄像头也好,入门首先要做得就是驱动,因为这些东西最基本的地方就在于驱动程序的设计,而现在网上有关驱动的源码相当成熟,无论是USB还是摄像头,都有可执行的C代码,(可能因为linux是开源的缘故),接下来我建议你做的就是下载下经典的驱动源码,然后简化之,将不是必须的、附加的模块去掉,这个过程一开始是很痛苦的,但是它最大的好处是通过你的删减过程你会完全了解该驱动的构架,最最基本的构架,你会明白摄像头驱动所需要的所有模块,这样底层的东西明了了,上层的模块化设计、接口定义都能做到有的放矢


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8517777.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存