一. Ffmpeg的移植
- ffmpeg是一个开源免费跨平台的视频和音频流方案,它提供了录制、转换以及流化音视频的完整解决方案。移植ffmpeg的目的主要是为了使motion能支持将捕获到的视频流转换成avi格式的视频文件进行存储。因此,我们仅需要移植ffmpeg中如下两个库,而且要在移植Motion之前进行ffmpeg的移植:
- libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能。
- libavcodec:用于各种类型声音/图像编解码
- libavutil:包含一些公共的工具函数。
1.将resources/Sprint3/目录中的源码包解压:
- tar xzf ffmpeg-0.5.1.tar.gz
2.编译、安装 ffmpeg:
- 进入ffmpeg-0.5.1源码目录。使用命令:./configure --enable-memalign-hack --disable-debug --prefix=./_install --arch=arm --cross-prefix=arm-linux- --enable-shared,生成Makefile。其中--prefix指明生成的库和执行程序的安装目录,这里将该路径设置为ffmpeg源码目录下的_install目录
- 使用命令:make,编译源码
- 使用命令:make install,将生成库和头文件安装到指定的_install目录下
- 拷贝./_install/lib/下共享库到开发板根文件系统的/lib目录下
二. Motion主程序移植
- motion是一个开源的用于移动图像监控程序,下面是motion的移植安装和配置方法:
1. 将resources/Sprint3目录中的源码包解压
- tar xzf motion-3.2.12.tar.gz
2. 编译、安装motion
- a.进入motion-3.2.12源码目录,使用命令:./configure --prefix=${PWD}/_install --host=arm-linux --without-mysql --without-pgsql --with-ffmpeg=(ffmpeg的路径)/_install,生成Makefile。划线部分是ffmpeg的安装目录,自己根据情况修改。一定要加上否则没有录视频的功能!这里的安装目录在motion源代码目录的_install目录,如果在motion加了ffmpeg是这样的配置结果:

- b. 使用命令:make,编译源码,使用命令:make install,将生成库和头文件安装到指定的./_install目录下。生成的程序在_install/bin/motion,配置文件在_install/etc/motion-dist.conf,复制程序和配置文件到开发板根文件系统中。
3. 配置motion
- 编译motion的时候,在安装目录(_install)下有etc/ motion-dist.conf文件,这个文件是motion运行的时候所依赖的配置文件,我们利用该文件作为基础,针对我们的开发板做一定的修改,这里我们列出了主要关心和修改的配置参数:

- 除此之外,为了能通过motion使用ffmpeg录制视频的功能,还需要确保该文件的以下配置参数如下设置:
- ffmpeg_cap_new on
- ffmpeg_cap_motion off
- ffmpeg_video_codec mpeg4
- 如果想要在物体移动的时候将移动范围框出来,就要设置:locate on
- 将该文件复制到开发板根文件系统下,之后按照上述给出的参考值修改相关的配置参数,保存以后,使用如下命令开启:
- motion -c motion-dist.conf

- 关于sql由于我们暂时没有用到,所以有关sql的错误和警告先不予理会。通过samba观察开发板根文件系统的mnt/sd目录发现有如下文件,而且当有物体在摄像头前移动会报警。

- 上图是抓拍到的移动图像,可以看出来已经将移动物体表示出来了,表明我们的motion移植成功了,而且存在avi视频文件,也说明我们的ffmpeg也移植成功!
本文详细介绍了如何在嵌入式设备上移植ffmpeg和motion,以实现移动物体监控系统。首先,文章讲解了ffmpeg的移植步骤,包括配置、编译和安装,然后介绍了motion的移植过程,特别强调了ffmpeg配置的重要性。最后,提到了motion的配置参数,如ffmpeg_cap_new和ffmpeg_video_codec,以确保系统能在物体移动时记录avi格式的视频,并能显示移动物体的边界。

3909

被折叠的 条评论
为什么被折叠?



