树莓派两种方法实现视频监控

本文对比了树莓派上的两种视频监控软件:motion和mjpg-streamer。motion通过配置文件设定动态感知,资源消耗较大,刷新率受限;mjpg-streamer则更流畅,但安装过程较复杂。详细介绍了motion的安装与配置步骤,以及mjpg-streamer的安装、编译和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析:

树莓派上有几种视频监控软件 :

  • motion
  • mjpg-streamer

相同点:都是linux系统上监控用的程序。
不同点:(不同点摘自 :https://www.jianshu.com/p/069c61315e8a

  1. motion 通过 motion.conf配置文件,可以设定动态感知的动作。比如有宠物进入摄像头范围内,motion自动捕获截图或者视频,然后触发既定的脚本(sh,python等等)。MJPG-streamer好像不能
  2. motion比较吃资源,且刷新率设定的不能太高,导致视频不连续。MJPG-streamer就比较流畅。motion比较吃资源,且刷新率设定的不能太高,导致视频不连续。MJPG-streamer就比较流畅。
  3. motion安装比较简单,通过apt-get就可以。MJPG-streamer需要下载代码,自己 make。当然也得安装必要的依赖包。还好不算很多 motion安装比较简单,通过apt-get就可以。MJPG-streamer需要下载代码,自己 make。当然也得安装必要的依赖包。还好不算很多

motion安装方法:

一、工具

  • 1、树莓派3B
  • 2、USB摄像头

二、操作步骤

  • 1、安装motion
sudo apt-get install motion
 
  • 1
  • 2、配置motion

(1)

sudo nano /etc/default/motion
 
  • 1

将里面的no修改成yes,让motion可以一直在后台运行:start_motion_daemon=yes

这里写图片描述

(2)

sudo nano /etc/motion/motion.conf
 
  • 1

修改配置文件,这个文件比较长,请确保一下参数的配置。在nano编辑器下,可以使用^w快速查找到如下配置内容。也可以使用^v向下翻页。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • 3、启动motion
sudo motion
 
  • 1
  • 4、查看视频数据
    在局域网内的设备,不管是手机还是电脑,均可打开浏览器访问树莓派IP:8081
  • 5、退出motion
killall -TERM motion
 
  • 1

或者

service motion stop
 
  • 1

三、可能出现的问题

  • 1、配置错误
    出现Unknown config option "sdl_threadnr"
    这里写图片描述
    解决方法:
    在配置文件中,直接将这一行内容进行注释。不是下图光标所在处,是光标下面sdl_threadnr 0这一行,注释成# sdl_threadnr 0即可。
    这里写图片描述

  • 2、8081页面无法显示
    在8081端口,无法显示数据,但是在8080端口可以看到motion的信息。
    这里写图片描述
    解决方法:
    这可能是摄像头没有被识别,可以将摄像头拔下重新插入。

方法二:

分析:

方法一实现的话会发现延时很大,表现出来就是很卡
其实不是很推荐方法一。

实现:

在 GitHub 上有一个开源项目叫 MJPG-streamer
https://github.com/jacksonliam/mjpg-streamer
推荐这个方法的原因是这个开源项目实现的视频监控很流畅,延时很小,所以总的比第一个强一些(安装稍麻烦)

1、 安装必要的库:

命令行直接敲以下指令:

sudo apt-get update
sudo apt-get install subversion
sudo apt-get install libjpeg8-dev
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev
sudo apt-get install cmake
sudo apt-get install git
2、git 开源的 project到本地
sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
3、编译
cd mjpg-streamer/mjpg-streamer-experimental
make all
sudo make install

如果是普通的USB摄像头,这个时候应该可以使用了,在命令行输入:

./start.sh

然后打开浏览器输入:
http://raspberry-ip-address:8080/
应该就可以看到Raspberry Pi Camera采集的动态视频了

保险起见,还是设定一下登陆帐号和密码,basic认证一下。
关掉服务后
跟之前命令比较,多了一个 -c userid:password。
可以在 start.sh 中修改 :(用户名和密码自己设置)
在这里插入图片描述

<think>好的,我现在需要回答用户关于树莓派实现程序或服务自启动的方法,特别是比较crontab和systemd两种方法。首先,我应该回顾一下用户提供的引用资料,确保信息准确。 根据引用[1],systemd是推荐的方法,因为它更灵活可靠。引用[3]详细说明了如何创建systemd服务单元文件,包括示例内容。而引用[2]提到crontab也是一种方法,但可能不如systemd好。引用[4]则提到了.desktop文件的方法,但用户主要关注crontab和systemd。 接下来,我需要整理这两种方法的步骤、优缺点,并进行对比。对于systemd,需要强调它是专为系统服务设计的,支持依赖关系、日志管理和状态监控。而crontab更适合定时任务,但也可以通过@reboot规则实现开机启动,但可能缺乏服务管理的功能。 要注意用户可能对Linux系统服务管理不太熟悉,所以解释时需要清晰简明。需要确保LaTeX格式正确,比如命令使用行内公式格式,独立代码块用反引号包围。同时,生成的相关问题要围绕这两种方法的比较和应用场景展开。 现在开始组织内容,先介绍两种方法,然后对比优缺点,最后生成相关问题。确保引用标记正确,如[^1]、[^2]等,并且回答结构符合用户要求的中文、分点清晰。</think>在树莓派实现程序或服务的自启动,常用方法包括`systemd`和`crontab`。以下是两种方法的对比及实现步骤: --- ### 一、`systemd`方法(推荐) #### 实现步骤 1. **创建服务文件** 在`/etc/systemd/system/`目录下新建服务文件(如`my_service.service`),内容示例: ```bash [Unit] Description=My Custom Service After=network.target [Service] ExecStart=/usr/bin/python3 /home/pi/myscript.py Restart=on-failure User=pi [Install] WantedBy=multi-user.target ``` - `ExecStart`:指定启动命令的绝对路径 - `Restart`:定义失败时自动重启[^3] 2. **启用服务** ```bash sudo systemctl enable my_service.service # 设置开机自启 sudo systemctl start my_service.service # 立即启动服务 ``` #### 优点 - **专业化管理**:支持服务状态监控(`systemctl status`)、日志查看(`journalctl`) - **依赖控制**:通过`After`参数定义启动顺序(如网络就绪后启动) - **稳定性**:自动处理守护进程和故障恢复 --- ### 二、`crontab`方法 #### 实现步骤 1. **编辑定时任务** 执行`crontab -e`,添加以下行: ```bash @reboot /usr/bin/python3 /home/pi/myscript.py ``` - `@reboot`表示在系统启动时执行命令 #### 优点 - **简单快捷**:适合快速测试或单次任务 - **无需root权限**:用户级任务可直接配置 #### 缺点 - **功能有限**:无法定义依赖关系或自动重启 - **日志追踪困难**:需手动重定向输出日志[^4] --- ### 三、方法对比 | **特性** | **systemd** | **crontab @reboot** | |-------------------|------------------------------------------|-------------------------------| | 适用场景 | 长期运行的服务/依赖系统资源的程序 | 简单脚本或临时任务 | | 日志管理 | 集成`journalctl`,支持结构化日志[^1] | 需手动处理输出(如`>> log.txt`) | | 服务状态监控 | 支持(`start/stop/status`) | 无 | | 权限要求 | 需要`sudo` | 用户级权限即可 | --- ### 四、选择建议 - **优先选`systemd`**:若程序需长期运行、要求稳定性或依赖其他服务(如网络) - **临时使用`crontab`**:快速验证脚本功能,或无需复杂管理的场景[^4] ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值