用motion实现家庭视频监控
需求?当然不是为了艳照。你们这些猥琐的人类!
毕竟家里总会有没人的时候,出门走到半路忘记煤气灶是不是关了,还得回去看看。
在这个科技以人为本的时代,当然应该是拿出智能手机联网看看啦。还有万一有人闯空门什么的,也能有个及时报警什么的。
motion是什么?motion是一个提供视频监控解决方式的开源软件。支持Linux/FreeBSD/MacOS等多个平台。本文以Linux为例,測试平台是LinuxMint17。motion的功能主要有下面几个:
支持USB摄像头和webcam(可通过HTTP查看实时视频直播的摄像头)
支持多摄像头
提供web訪问实时视频功能(能够把USB摄像头变成webcam)
重点是运动检測,能够在画面中出现活动物体时才開始拍摄并记录。以节约存储空间
能够配置在运动事件发生时拍照(连续拍照,可选保存全部照片或仅仅保存一张。保存一张可选保存第一张,最好的一张,或是运动在画面中央的一张)
能够配置各种事件触发(比方在运动检測发生时或者视频照片保存后发个邮件什么的)
能够配置web远程管理(用处不大。建议关闭)
能够配置使用数据库(支持MySQL和PostgreSQL)
……
当然,当中的web实时视频和web管理默认都仅仅能本机訪问,不建议配置为直接同意远程訪问,不安全。更安全的做法是:通过一个加密的web代理提供远程訪问,或者干脆就仅仅能通过ssh tunnel连到本地訪问。
为了手机訪问方便的话。还是前者吧。
开工。
LinuxMint上安装非常easy,apt-get就可以,只是它还依赖了ffmpeg,会自己主动装上。
然后是配置,有好几种配置方式,比方常见的配置到~/.motion下什么的,只是我还是建议直接改动/etc/motion/motion.conf比較好。否则搞出太多配置文件,会搞不清终于生效的是哪个。
配置文件中每一个选项都有备注说明。就不一一介绍了。通常须要改的几个參数有:
daemon off - 一般就off好了,须要后台执行能够用 service motion start 来启动
videodevice /dev/video0 - 一般USB摄像头默认就是这个,假设有多个的话就以此类推
v4l2_palette 8 - 一般就用8好了,尽管并非全部的摄像头都是这个模式(至少我手里两个各自是3和6)。但事实上motion会自己主动检測选择合适的。关于这个參数有一点须要说明的是,在motion的早期版本号中支持了18种,如今仅仅有9种,当中有一些老式摄像头使用的SGBRG8模式(GBRG)在新版本号的motion中已经不再被支持,请更换新的摄像头。不建议使用motion文档评论区有人提供的补丁。
眼下市场上常见的RGB24或YUY2之类的都没问题
width/height - 建议依据摄像头改动,默认的320x240太低了。如今最低端的摄像头也至少是640x480的,连352x288的都已经没有了
framerate 2 - 默认的2有点低。可是太高的话占用的存储空间也会大。自己考虑决定吧
output_normal on - 检測到运动时拍照,on为保存全部拍的照片(会非常多)。可选关闭。第一张,最佳。中央
ffmpeg_cap_new on - 检測到运动时录像
ffmpeg_video_codec swf - 支持多种视频文件格式。只是要通过网页看的话,推荐还是swf格式
target_dir - 照片和视频的默认存放路径。注意:motion 默认以motion用户执行。所以这个路径的权限要注意一下
webcam_port 8081 - 实时查看视频的HTTP端口
control_port 8080 - 管理motion的WEB页面端口
以上两个设置为0就可以关闭对应功能
配置文件最后的 thread 參数用于指定多个摄像头时其他摄像头使用的配置文件
按自己的须要改动好配置文件以后就能够启动motion了:
sudo service motion start
命令行上会有一些提示信息,可是不太全,只是没关系,还有日志嘛:
tail -f /var/log/syslog
假设有错误。请依据错误信息检查改动配置文件,直到服务正常启动。
如今就能够用浏览器打开: http://localhost:8080 查看实时视频,假设是一块灰图,说明摄像头配置不正确,请查看日志。
事件触发的配置也在配置文件中。经常使用的有:
on_event_start - 运动事件開始
on_event_end - 运动事件结束
on_picture_save - 图片保存后(可选參数 %f 为对应的图片文件名称)
on_movie_end - 视频保存后(可选參数 %f 为对应的视频文件名称)
这几个选项的參数都是可执行文件名称,能够自己写一些脚本触发执行,比方发个邮件以便及时收到通知(或利用手机运营商提供的邮箱转成短信提醒),或上传到云端(防止丢失证据)。
至此大功告成。
补充说明:
眼下我仅仅在Linux下測试成功,FreeBSD下有困难。原因在于摄像头驱动不好搞。尽管我一向喜欢FreeBSD多些,可是碰到硬件驱动问题还真是没办法。
FreeBSD版的motion本身应该是没有多大问题。问题在于它使用一个叫PWCBSD的东西来做摄像头兼容处理。由于大部分摄像头都能够被V4L(Video for Linux)所驱动,这个PWCBSD则是实现了部分摄像头的V4L驱动在BSD上的兼容,问题在于它实现的型号太少,反正我手头上的几个都不行。所以全然没法用。
更坑的是PWCView倒是支持的摄像头比較多一些——注意,是ports里另外一个单独的PWCView。不是PWCBSD自带的那个PWCView。
所以我眼下的办法是用一个python程序去调用PWCView来实现部分motion功能,由于功能非常简陋。就不献丑了。
推荐还是用Linux吧,省事非常多。
用motion实现家庭视频监控的更多相关文章
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码
		本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾 ... 
- 【转】网络视频监控P2P解决方案
		一.摘要 本文分析了日益增长的民用级别家庭和个人网络视频监控市场的需求特点,并给出了一种经济可行易于大规模部署的P2P解决方案. 由于篇幅有限,本文只给出了方案的思路,未对更深入的技术细节做详细的论述 ... 
- 基于.NET打造IP智能网络视频监控系统
		开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造 ... 
- C# 视频监控系列:学习地址汇总
		原文地址:http://www.cnblogs.com/over140/archive/2009/04/07/1429308.html 前言 对于视频监控系统大家应该是不陌生的,实施的路况信息.地铁. ... 
- 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然
		from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ... 
- 如何利用SimpleNVR建立全天候远程视频监控系统
		随着社会经济的发展,5G.AI.云计算.大数据.物联网等新兴技术迭代更新的驱动下,传统的安防监控早已无法满足我们的需求.那么我们如何建立全天候远程视频监控系统来替代传统监控呢?如何进一步优化城市管理. ... 
- 海康威视,大华,宇视    的视频监控iOS Demo
		原谅我只提供一个链接,我在这里写了两遍,最后加个链接页面卡死了,下面的demo,最好真机调试.(写博客还是在别的地方写复制到这里比较好!) 一个画面可以做,4个,9个,16个画面原理是一样的,集合到自 ... 
- [视频监控]用状态机图展示Layout切换关系
		监控系统通常会提供多种Layout给用户,用于满足不同需求,如:高清显示单路视频或者同时观察多路监控情况. 文中系统只提供了单路.2x2(2行2列共4路).8路(4行4列布局,从左上角算起,有个核心显 ... 
- Python远程视频监控
		Python远程视频监控程序 老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可 ... 
随机推荐
- virt-install 创建虚拟机
			[root@kvm-server vm]# qemu-img create -f qcow2 centos69b-disk0.qcow2 10G Formatting 'centos69b-disk0 ... 
- 解除  linux 账户过期时间
			riyimei:~ # chage -E 2019/01/01 li Aging information changed. riyimei:~ # cat /etc/shadow |grep li l ... 
- harbor  安装过程
			[root@master01 harbor]# ./prepare Clearing the configuration file: ./common/config/adminserver/env ... 
- Python排序 插入排序
			插入排序从前往后遍历数组的每一个元素,对每一位元素都将其插入到已经有序的部分数组中,所以插入排序的要点就是找出要插入元素在已经有序的部分中的位置,同时,由于插入排序采用原地排序(in-place)算法 ... 
- python 面向对象 类方法,静态方法,property
			property 内置装饰器函数 只在面向对象使用 把方法当初属性使用(方法不加参数) 例子: class Rectangle: def __init__(self,long,wide,color): ... 
- 【codeforces 20B】Equation
			[题目链接]:http://codeforces.com/contest/20/problem/B [题意] 给你一个方程,让你输出这个方程的解的情况. [题解] a==0,b==0,c==0时,为恒 ... 
- CodeForces 445E DZY Loves Colors
			DZY Loves Colors Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces ... 
- C++ Primer笔记13_运算符重载_总结
			总结: 1.不能重载的运算符: . 和 .* 和 ?: 和 :: 和 sizeof 和 typeid 2.重载运算符有两种基本选择: 类的成员函数或者友元函数, 建议规则例如以下: 运算符 建议使用 ... 
- Unity 内置Shader变量、辅助函数等
			一:标准库里的常用.cginc文件 HLSLSupport.cginc - (automatically included) Helper macros and definitions for cro ... 
- CSDN博客2014年4月24日清理缓存
			亲爱的CSDN博主们.我们将于今天(2014年4月24日)对CSDN博客频道缓存进行清理,假设您登录后发现自己的文章总数.积分.评论数.訪问数出现异常,请不要慌张.您的数据并没有丢失.将会在缓存清理完 ... 
