文档章节

在插入/移除usb摄像头时自动启动/停止mjpg-streamer服务更智能些

娱乐你我
 娱乐你我
发布于 2014/10/15 16:17
字数 426
阅读 621
收藏 0

      OpenWrt的mjpg-streamer软件包安装后会在/etc/hotplug.d/usb/下生成”20-mjpg-streamer“shell脚本文件(对应在OpenWrt源码位置:feeds/packages/multimedia/mjpg-streamer/files/mjpg-streamer.hotplug)。此文件源码如下:

case "$ACTION" in
	add)
		# start process
		/etc/init.d/mjpg-streamer start
		;;
	remove)
		# stop process
		/etc/init.d/mjpg-streamer stop
		;;
esac

      其功能是在插入usb设备时,会执行此脚本add分支下的代码,这里即执行/etc/init.d/mjpg-streamer start。当usb设备移除时会执行此脚本的remove分支代码,这里即执行/etc/init.d/mjpg-streamer stop。如果路由只有一个usb口并且没有外接usb hub时,此脚本可以工作的很好(唯一问题是不管插入何种usb设备都会运行此脚本的add分支,移除时会执行此脚本的remove分支)。但是在多usb口或者外接了usb hub后,如果挂载的usb摄像头mjpg-streamer服务已经良好的运行,此时再移除usb hub下的其他usb设备会导致mjpg-streamer服务被停止,不够智能,我们需要让它更智能些。

      解决办法是add和remove分支都加入判断条件。mjpg-streamer服务需要运行的条件是”/dev/video*“文件存在并且存在”/usr/bin/mjpg_streamer“可执行文件且”mjpg-streamer“服务还未运行。mjpg-streamer服务需要停止的条件是”/dev/video*“文件不存在并且”mjpg-streamer“服务还在运行。综上所述,修改此脚本代码如下:

case "$ACTION" in
	add)
		if [ -c /dev/video[0-9] ] &&
			!(pgrep -f mjpg_streamer >/dev/null 2>&1) &&
			[ -x "/usr/bin/mjpg_streamer" ]; then
			/etc/init.d/mjpg-streamer start
		fi
		;;
	remove)
		if [ ! -c /dev/video[0-9] ] &&
			(pgrep -f mjpg_streamer >/dev/null 2>&1); then
			/etc/init.d/mjpg-streamer stop
		fi
		;;
esac


© 著作权归作者所有

娱乐你我
粉丝 39
博文 32
码字总数 23759
作品 0
福州
程序员
私信 提问
基于pcDuino的WiFi实时视频监控智能小车——软件部分(二)

接上贴: 基于pcDuino的WiFi实时视频监控智能小车——软件部分(一) 二、安装视频流传输服务器 我们用开源软件包 mjpg-streamer 来实现视频流传输服务器。客户端可以是浏览器或者是专门的A...

pc朵拉
2013/07/30
2.6K
0
【视频监控小车】基于pcDuino的WiFi实时视频监控智能小车

在这里我们详细地介绍了如何用pcDuino来搭建一款WiFi实时视频监控小车,下面我们从硬件和软件两个方面进行详细介绍。 、 一:软件部分 在硬件方面,我们用Arduino的Motor Shield 来驱动小车的...

pc朵拉
2013/12/04
3.9K
0
pcDuino潜水艇制作说明

这是个简易的潜水艇模型,由于艇身狭窄,在结构上没法容纳潜伏控制机械装置,因此整体处于漂浮状态。整体上特点如下 1、采用pcduino作为控制中枢,轻易实现网络控制和视频传输; 2、船体小巧...

pc朵拉
2013/12/09
1K
12
PHP读取mjpg-streamer的视频

我在OpenWRT上安装了摄像头,可以使用mjpg-streamer截图和实时视频 ,问题是如何使用PHP来读取mjpg-streamer的视频保存在服务器上? 我在服务器上用wget下载stream流文件,但是无法使用播放器...

eechen的粉丝
2013/06/18
611
0
Get the webcam streamer

In order to install it on your pi follow the steps: 1. Install subversion: sudo apt-get update sudo apt-get install subversion 2. Go to the folder where you want to have the mjp......

ustbgaofan
2014/08/18
36
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
4
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部