[国嵌攻略][172][监控主系统设计与开发]
ffmpeg是一个开源免费跨平台的视频和音频流方案,它提供了录制、转换以及流化音视频的完整解决方案。移植ffmpeg的目的主要是为了使motion能支持将捕获到的视频流转换成avi格式的视频文件进行存储。因此,我们仅需要移植ffmpeg中如下两个库,而且要在移植Motion之前进行ffmpeg的移植:
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能。
libavcodec:用于各种类型声音/图像编解码
libavutil:包含一些公共的工具函数。
1.源码包解压:
tar xzf ffmpeg-0.5.1.tar.gz
2.编译、安装 ffmpeg:
2.1.进入ffmpeg-0.5.1源码目录。使用命令:
./configure --enable-memalign-hack --disable-debug --arch=arm --cross-prefix=arm-linux- --enable-shared --prefix=.../_install
其中--prefix指明生成的库和执行程序的安装目录,这里将该路径设置为ffmpeg源码目录下的_install目录。
2.2.使用命令:make,编译源码,使用命令:make install,将生成库和头文件安装到指定的_install目录下。
2.3.拷贝.../_install/lib/下共享库到开发板根文件系统的/lib目录下。
1.下载并解压motion
tar xzf motion-3.2.12.tar.gz
2.配置
mkdir _install
./configure --host=arm-linux --without-mysql --without-pgsql --with-ffmpeg=.../ffmpeg-0.5.1/_install --prefix=${PWD}/_install
3.编译
make
4.安装
make install
生成的程序在_install/bin/motion,配置文件在_install/etc/motion-dist.conf。复制程序和配置文件到开发板根文件系统中。
并且复制jpeg的动态库到开发板的lib目录,cp /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/lib/libjpeg.* .../rootfs/lib/ -rf。
在开发板根文件系统目录中创建/var/run/motion/目录,因为默认/var/run/motion/motion.pid文件将用来存放运行中的motion进程。当然也要创建motion.pid文件。
5.修改配置文件
videodevice /dev/video0 摄像头设备文件名
v4l2_palette 2 摄像头获取图像格式
width 640 图像宽度
height 480 图像高度
framerate 15 图像帧率
threshold 1500 物体移动阈值
locate on 标出移动物体
target_dir /mnt/sd 图片保存位置
on_motion_detected madplay alarm.mp3 当检测到物体移动时执行命令
webcam_maxrate 3 网页监控视频流的最大帧率。由于在局域网中应用,因此为获得更好的实时监控质量,提高了该值。
webcam_localhost off 限制仅本地可连接网络摄像机。取消该限制。
control_localhost off 限制仅本地可通过网页进行控制。取消该限制。
6.运行
motion –c motion-dist.conf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术