MotionPlus 安装指南
介绍
MotionPlus是一款用于监控摄像头的视频信号,并检测运动的应用程序,是对原有Motion软件的升级版本。它支持多种设备,如网络摄像头、V4L2网络摄像头和视频采集卡等。MotionPlus提供多种功能,包括录制视频、保存图片、实时视频流观看、调用脚本、日志记录、以及运动检测等功能。
安装
MotionPlus提供了多种安装方法,下面以基于Debain发行版的安装方法进行介绍。
1 安装相关依赖库
sudo apt install \
autoconf \
automake \
autopoint \
build-essential \
pkgconf \
libtool \
libzip-dev \
libjpeg-dev \
git \
libavformat-dev \
libavcodec-dev \
libavutil-dev \
libswscale-dev \
libavdevice-dev \
libwebp-dev \
gettext \
libmicrohttpd-dev \
libasound2-dev \
libpulse-dev \
libfftw3-dev \
libsqlite3-dev
注意:MotionPlus支持三种数据库,本文安装的是Sqlite3数据库。
2 安装OpenCV
- 编写安装脚本
vim build.sh
#!/bin/bash
# 检查是否退出
set -e
# 下载编译代码
opencv_version=opencv-4.10.0
wget -O ${opencv_version}.zip https://github.com/opencv/opencv/archive/4.10.0.zip
unzip ${opencv_version}.zip
# 新建编译目录
build_dir=${opencv_version}/build
if [ ! -d "$build_dir" ]; then
echo "Create ${build_dir}..."
mkdir -p ${build_dir}
fi
cd ${build_dir}
# 编译算法库
echo "Building OpenCV ..."
cmake -D CMAKE_INSTALL_PREFIX=$HOME/.local \
-D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_PNG=ON \
-D BUILD_JPEG=ON \
-D WITH_TIFF=OFF \
-D WITH_WEBP=OFF \
-D WITH_OPENJPEG=OFF \
-D WITH_JASPER=OFF \
-D WITH_OPENEXR=OFF \
-D BUILD_ZLIB=ON \
-D WITH_EIGEN=OFF \
-D BUILD_opencv_freetype=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D OPENCV_DOWNLOAD_MIRROR_ID=gitcode \
..
make -j$(nproc)
# 安装算法库
make install
- 运行安装脚本
bash build.sh
- 添加环境变量
vim ~/.bashrc
export C_INCLUDE_PATH=$HOME/.local/include/opencv4:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$HOME/.local/include/opencv4:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=$HOME/.local/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH
3 安装libcamera
- 安装编译工具
pip install meson ninja
- 编写安装脚本
vim build.sh
#!/bin/bash
# 检查是否退出
set -e
# 下载编译代码
git clone https://git.libcamera.org/libcamera/libcamera.git
cd libcamera && git tag
git checkout v0.2.0 && git checkout -b v0.2.0
git branch
# 生成编译配置
meson setup build --prefix $HOME/.local
# 编译安装库
ninja -C build install
# 复制配置文件
cp $HOME/.local/lib/x86_64-linux-gnu/pkgconfig/libcamera*.pc $HOME/.local/lib/pkgconfig
- 运行安装脚本
bash build.sh
- 添加环境变量
vim ~/.bashrc
export C_INCLUDE_PATH=$HOME/.local/include/libcamera:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$HOME/.local/include/libcamera:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=$HOME/.local/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LD_LIBRARY_PATH=$HOME/.local/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
参考网址:
4 安装MotionPlus
- 编写安装脚本
vim build.sh
#!/bin/bash
# 检查是否退出
set -e
# 下载编译代码
git clone https://github.com/Motion-Project/motionplus.git
cd motionplus
autoreconf -fiv
./configure --prefix=$HOME/.local --with-opencv=$HOME/.local --with-libcam=$HOME/.local
make -j$(nproc)
make install
- 运行安装脚本
bash build.sh
参考网址:
测试
- 复制配置文件当工作目录
mkdir workspace
cp ~/.local/etc/motionplus/*.conf workspace
- 设置MotionPlus的配置文件
cd workspace
vim motionplus-dist.conf
;*************************************************
;***** System
;*************************************************
daemon off ; 程序以前台模式运行
log_level 6 ; 日志记录的详细程度
log_type ALL ; 日志记录的类型
;log_file ; 日志文件的路径
;*************************************************
;***** Camera
;*************************************************
;device_name ; 摄像头设备的名称
;device_id ; 摄像头设备的编号
;target_dir ; 视频文件存储路径
;*************************************************
;***** Source
;*************************************************
;v4l2_device /dev/video0 ; 驱动摄像头
;netcam_url rtsp://username:password@192.168.1.100:554/stream1 ; 网络摄像头
;*************************************************
;***** Image
;*************************************************
;width 640 ; 输入图像宽度
;height 480 ; 输入图像高度
;framerate 15 ; 输入视频帧率
;*************************************************
;***** Overlays
;*************************************************
text_right %Y-%m-%d\n%T ; 视频右侧显示文本
;*************************************************
;***** Method
;*************************************************
emulate_motion off ; 运动仿真模式
threshold 1500 ; 检测运动阈值
;*************************************************
;***** Masks
;*************************************************
noise_level 32 ; 噪声过滤的级别
despeckle_filter EedDl ; 斑点去除过滤器
;*************************************************
;***** Detection
;*************************************************
minimum_motion_frames 1 ; 检测到的最小运动帧数
event_gap 60 ; 两次检测事件最小间隔
pre_capture 3 ; 事件触发前的捕获帧数
post_capture 10 ; 事件触发后的捕获帧数
;*************************************************
;***** Scripts
;*************************************************
on_event_start ; 运动开始前的检测脚本
on_event_end ; 运动开始后的检测脚本
;*************************************************
;***** Picture
;*************************************************
picture_output off ; 是否启用图片输出
picture_filename %v-%Y%m%d%H%M%S-%q ; 图片文件命名格式
;*************************************************
;***** Movie
;*************************************************
movie_output on ; 是否启用视频输出
movie_max_time 120 ; 视频文件最大时长
movie_quality 45 ; 输出视频视频质量
movie_container mkv ; 视频文件保存格式
movie_filename %v-%Y%m%d%H%M%S ; 视频文件命名格式
;*************************************************
;***** Web Control
;*************************************************
webcontrol_port 8080 ; 网络控制端口号
webcontrol_localhost on ; 网络控制是否仅限于本地访问
webcontrol_parms 0 ; 网页控制的参数
;*************************************************
;***** Web Stream
;*************************************************
stream_preview_scale 25 ; 预览流的缩放比例
stream_preview_method combined ; 预览流的生成方法
;*************************************************
; Device config files - One for each device.
;*************************************************
camera path/to/camera1-dist.conf
- 设置摄像机视频流的配置
cd workspace
vim camera1-dist.conf
;*************************************************
; Configuration options specific to camera 1
;*************************************************
;*************************************************
;***** Camera ; 摄像头设置
;*************************************************
device_name MyCam1 ; 摄像头名称
device_id 101 ; 摄像头标识
;*************************************************
;***** Source ; 视频流地址
;*************************************************
netcam_url rtsp://username:password@192.168.1.100:554/stream1 ; 网络视频流
;*************************************************
;***** Image ; 视频帧设置
;*************************************************
width 640 ; 输入图像帧宽
height 480 ; 输入图像帧高
framerate 15 ; 输入视频帧率
;*************************************************
;***** Overlays ; 画面叠加文本
;*************************************************
text_left CAMERA 1
;*************************************************
;***** Movie ; 视频保存名称
;*************************************************
movie_filename CAM01_%t-%v-%Y%m%d%H%M%S
- 启动MotionPlus的应用程序
# 启动应用程序
motionplus -c motionplus-dist.conf
# 使用WEB查看视频
http://127.0.0.1:8080/
# 使用VLC查看视频
http://127.0.0.1:8080/101/mpegts 摄像头的主流
http://127.0.0.1:8080/101/mpegts/substream 摄像头的子流
http://127.0.0.1:8080/101/mpegts/motion 摄像头的运动图像流
http://127.0.0.1:8080/101/mpegts/source 摄像头的源图像流
http://127.0.0.1:8080/101/mpegts/secondary 次级检测流的图像(如果激活)