需求?当然不是为了艳照。你们这些猥琐的人类!

毕竟家里总会有没人的时候,出门走到半路忘记煤气灶是不是关了,还得回去看看。

在这个科技以人为本的时代,当然应该是拿出智能手机联网看看啦。还有万一有人闯空门什么的,也能有个及时报警什么的。

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实现家庭视频监控的更多相关文章

  1. 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾 ...

  2. 【转】网络视频监控P2P解决方案

    一.摘要 本文分析了日益增长的民用级别家庭和个人网络视频监控市场的需求特点,并给出了一种经济可行易于大规模部署的P2P解决方案. 由于篇幅有限,本文只给出了方案的思路,未对更深入的技术细节做详细的论述 ...

  3. 基于.NET打造IP智能网络视频监控系统

    开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码   开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造 ...

  4. C# 视频监控系列:学习地址汇总

    原文地址:http://www.cnblogs.com/over140/archive/2009/04/07/1429308.html 前言 对于视频监控系统大家应该是不陌生的,实施的路况信息.地铁. ...

  5. 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然

    from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ...

  6. 如何利用SimpleNVR建立全天候远程视频监控系统

    随着社会经济的发展,5G.AI.云计算.大数据.物联网等新兴技术迭代更新的驱动下,传统的安防监控早已无法满足我们的需求.那么我们如何建立全天候远程视频监控系统来替代传统监控呢?如何进一步优化城市管理. ...

  7. 海康威视,大华,宇视 的视频监控iOS Demo

    原谅我只提供一个链接,我在这里写了两遍,最后加个链接页面卡死了,下面的demo,最好真机调试.(写博客还是在别的地方写复制到这里比较好!) 一个画面可以做,4个,9个,16个画面原理是一样的,集合到自 ...

  8. [视频监控]用状态机图展示Layout切换关系

    监控系统通常会提供多种Layout给用户,用于满足不同需求,如:高清显示单路视频或者同时观察多路监控情况. 文中系统只提供了单路.2x2(2行2列共4路).8路(4行4列布局,从左上角算起,有个核心显 ...

  9. Python远程视频监控

    Python远程视频监控程序   老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可 ...

随机推荐

  1. WordPress 不错的插件

    Akismet – 防止垃圾评论 WP-PostViews Plus - 页面访问量统计 All in One SEO Pack – 搜索引擎优化的插件,自动优化搜索引擎. WP Super Cach ...

  2. c标签迭代Map

    <%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" ...

  3. [NOIP2015普及组]推销员

    题目:洛谷P2672.codevs5126.Vijos P1977 题目大意:有个推销员要去推销,要你求他推销1~n户人家分别最多花多少“疲劳值”.具体见题目. 解题思路:如果用$O(n^2)$做的话 ...

  4. BZOJ 3881 [COCI2015]Divljak (Trie图+Fail树+树链的并+树状数组维护dfs序)

    题目大意: Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P. ...

  5. java list序列化json 对象、json数组

    list<T> 序列化   json对象   ----------- JSONObject -------JSONObject.toJSONString(str);  解析:JSONObj ...

  6. java里的一些特别值得注意的地方

    return 语句的作用:1.返回值 2.结束某个方法的执行. 局部变量必需要初始化,全局变量系统会默认初始值: 整型数赋默认值为0. 浮点数赋默认值为0.0,boolean赋默认值为false. c ...

  7. hadoop-12-安装ambari-agent

    hadoop-12-安装ambari-agent 在所有的机器上面安装ambari-agent 1, cd /etc/yum.repos.d/vi 三个文件vi ambari.repo#VERSION ...

  8. 【C#】报表制作&lt;机房重构&gt;

    前言 和VB须要引用其它报表软件不同,VS自带报表设计的功能,初次尝试.就感受到了它的强大之处. 报表制作 话不多说.直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗口 ...

  9. Session、Cookie总结

    什么是sessnion,session存在哪,能存多久.怎么设置他的存储时间 一.什么是session 1.session 被翻译为会话.当client(一般都是浏览器作为client)訪问serve ...

  10. invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

    Column 'dbo.tbm_vie_View.ViewID' is invalid in the select list because it is not contained in either ...