搭建自己的基于motion移动物体的监控系统

参考文章:
http://code.csdn.net/news/2820789
https://www.zybuluo.com/daguang740/note/148852
http://blog.csdn.net/ljmrs/article/details/38318835
http://blog.csdn.net/raptor/article/details/42010371
http://www.bkjia.com/xtzh/929840.html
http://blog.csdn.net/kangear/article/details/8758695   远程监控系统项目总结

开发环境:

PCubuntu 14.04 32bit

交叉编译器:arm-Linux-gcc-4.4.3

motion版本:4.0.1

开发板:tq210NANO-PC

motion官方下载:http://www.lavrsen.dk/foswiki/bin/view/Motion/DownloadFiles

ffmpeg:2.2.3.

依赖库:libx264 因为ffmpeg的编译时需要x264的。

关于ffmpeg的编译参考:


1.下载源码。

2.配置选项。

2.1查看motion版本的4.0.1下的INSTALL,按照其要求安装相应的库,并且保证已经编译好FFMPEG相关的库(libavformat、libavcodec、libavutils、libswscale)

,当检查上面的环境已经配置好时,执行autoreconf -fiv,此时会生成.configure的文件(4.0以前的版本是直接有.configure文件的,但是从4,0开始需要自己配置生成.configure文件,我觉得可能是motion需要的一些库文件和环境要求比较多,所以再生成.configure文件之前最好进行一下环境的检查)。

autoconf是 用来产生configure文件的 .configure是 一个脚本,它能设置
源程序来适应各种不同的操作系统平台,并且根据不同的 系统来产生合适的 Makefile,从而可以使
你的源代码能在不同的操作系统平台上被编译出来.

2.2 配置命令:

./configure --prefix=DIR --host=arm-linux --with--ffmpeg=DIR

上面的prefix为指定motion的安装目录。host指定编译环境为arm环境,with-ffmpeg为指定ffmpeg的生成目录。

3.编译。

make 

编译会正常进行,但是在链接库的时候会出现说真不到libx64.so.142的库文件,其实在编译ffmpeg的时候我们是需要依赖x264库的,这里是因为libavcodec的链接是需要

libx264库文件的,这是打开Makefile文件,在LIBS的后面添加编译链接libx264的路径, 例如我的为 -L/home/huang/libx264/arm/lib -lx264,这样在链接的时候就会把x264的库文件加入到libavcodec库中,从而在链接的时候才能成功。

make install安装motion到指定的目录。

4.在motion的安装目录下 有三个文件bin etc share

我们只需拷贝bin下的motion和源码目录下的motion-dist.conf文件到开发板中,这里需要修改一下motion-dist.conf,

1. 39行 指定你的摄像头的设备文件节点,这里需要根据实际情况修改。

2. 503 指定访问视频的IP地址限制,默认(on)是只能本地的IP连接,我们可以自行修改。

3. 537 web控制的IP限制,默认也是本地控制。这里主要web控制的端口是8080,视频的访问接口端口是8081.

4. 392 指定当有移动物体的时候是否用矩形框进行框住,默认不会。

5.450 指定捕捉图片和视频的存放目录,如果不指定默认会在motion程序的运行位置进行存放。

6.336 指定ffmpeg指定视频的存放视频格式。默认是avi的格式。


注意:上面的摄像头设备文件节点时必须修改,web和视频访问地址建议修改,其它自行按照实际情况修改。


总结:1.版本问题,使用的motion是4.0.1,ffmpeg是2.2.3版本,自己找到的资料是使用ffmpeg-0.5.1和motion-3.2.12的版本,自己也编译过motion-3.2.12的版本,但是没有将ffmpeg的依赖加入motion中,所以不能进行录制视频,因为ffmpeg是进行视频编解码的作用,本来想用自己的ffmpeg2.2.3编译进入motion-3.2.12的,但是在编译的时候出现说我的ffmpeg的版本太多,要求我不能使用高于0.4.8的版本,这时我想从新编译ffmpeg真的很苦逼(因为ffmpeg是一个很大的项目,会融合很多的项目和依赖很多的库),所以不想从新编译ffmpeg,这时想到把motion的版本提高一点,找到motion的官网找到最新版本的motion-4.0.1,这个是2016年的,和我的ffmpeg得版本应该是可以兼容的,所以把这两个进行编译。

这里总结两种应该可以编译的版本:

ffmpeg-0.5.1.tar.gz motion-3.2.12.tar,gz (这时我查资料的要求,因为自己以前编译的ffmpeg过更高的版本,所以放弃)

ffmpeg-2.2.3.tar.gz motion-4.0.1.tar.gz (这时我使用的版本,因为以前编译过ffmpeg,所以只需下载motion-4.0.1直接编译。)


2.关于编译motion中的x264的库文件。

查看我们生成的arm下的可执行文件的依赖库使用arm-linux-readelf -d motion进行查看。

我们看到除了常用m、c、pthread库,还有jpeg,x264(这是用于图片压缩,转换等处理)、avutil、avformat、avcodec、swscale为ffmpeg相关的。


3.automake,autoconf使用详解 http://www.laruence.com/2009/11/18/1154.html

你可能感兴趣的:(嵌入式项目,linux驱动开发,音视频开发)