mjpg-streamer视频服务器移植
相关软件下载地址:http://pan.baidu.com/s/16yo8Y
JPEG库的移植
对于内核linux-2.6.35,不能再使用servfox,如果要使用的需要修改大量的代码。在此选用新的方法来移植,需要两个文件jpeg,mjpg-stream.移植如下:
jpeg源码包通过下面这个网址下载
http://www.ijg.org/files/jpegsrc.v8b.tar.gz
1) 解压源码包
tar xvf jpegsrc.v8b.tar.gz
2) 配置源码
cd jpeg-8b
./configure --prefix=/home/linux/jpeg --host=arm-none-linux-gnueabi
注:./configure 配置源代码树
安装目录:
--prefix=PREFIX
体系无关文件的顶级安装目录PREFIX(自己的主机用户目录下 /home/XXX),也就Apache的安装目录。[/usr/local/apache2]
系统类型:
--host=HOST
指定Apache HTTP服务器将要运行的目标系统类型HOST 。
[BUILD]
3)编译
make
4)安装
make install
5)拷贝库到文件系统中
cp
/home/linux/jpeg/lib/libjpeg.so.8
/source/rootfs/lib
(上面一句我改成了 cp libjpeg.so* ~/nfs_share/rootfs/lib/ -d )
④mjpg-stream的移植
1)下载源码
mjpg-stream源码包通过下面这个网址下载
http://sourceforge.net/projects/mjpg-streamer/
2)解压源码
tar xvf
mjpg-streamer-r63.tar.gz
mkdir /home/linux/mjpg-streamer-r63
3)修改源码
cd mjpg-streamer-r63
修改顶层makefile及plugins目录中的各级makefile,将所有
CC=gcc
修改为
CC=arm-cortex_a8-linux-gnueabi-gcc
修改完后,特别修改处:
修改plugins/input_uvc/Makfile
修改
CFLAGS += -O2
-DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/linux/jpeg/include
修改
$(CC)
$(CFLAGS) -ljpeg -o $@ input_uvc.c
v4l2uvc.lo jpeg_utils.lo dynctrl.lo
为
$(CC) $(CFLAGS) -ljpeg -L/home/linux/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
4)编译、移植
make
mkdir /source/rootfs/mjpg
cp *.so
/source/rootfs/mjpg
cp
mjpg_streamer /source/rootfs/bin
mjpg_streamer -i "/mjpg/input_uvc.so -y" -o "/mjpg/output_http.so -w 192.168.0.110:8080" & (注意:这里是板子的ip 192.168.1.236)
使用视频连接软件,进行连接,会看到摄像头采集到了清晰地景象!!!
浏览器上执行:
http://192.168.1.236:8080/?action=snapshot (每次回车单张抓拍)
或者
http://192.168.1.236:8080/?action=stream
⑤拍照功能的实现
由于mjpg_stream中output-file.so能实现连续拍照的功能,不能实现单拍或连拍几张的功能所以需要对output_file原码进行修改。
# cd mjpg-streamer-rc63/plugins/output_file
# vim output_file.c
在96行 函数 void *worker_thread(void *arg) 体中加入以下代码:
char buf[10]; //用于存放从管道读取的命令
int flags = 0; //拍照标志,1:表示11张照片,2:表示1张照片
int fd_com = 0; //打开管道的文件描述符
stop_num = 0; //拍照计数
if ( access(“/tmp/webcom”,F_OK) < 0 ) //创建有名管道用于接收拍照命令
{
if ( mkfifo(“/tmp/webcom”,0666 ) < 0)
{
Printf(“ photo fifo create failed\n”);
}
}
fd_com = open (“/tmp/webcom”,O_RDONLY,0666);
if (fd_com < 0)
{
perror (“open the file webcom error”);
}
在while( ok >= 0 && !pglobal->stop){ 后加入
if (flags == 0)
{
while(1)
{
read(fd_com,buf,sizeof(buf));
if (strncmp(buf,”danger”,6) == 0) //拍11张照片
{
flags = 1;
bzero(buf,sizeof(buf));
break;
}
if (strncmp(buf,”one”,3) == 0) //拍1张照片
{
flags = 2;
bzero(buf,sizeof(buf));
break;
}
}
}
在if (delay > 0){
usleep(1000*delay);
}后加入
stop_num++
if (flags == 1) //判断拍照的数量
{
if ( stop_num > 9)
{
stop_num = 0;
flags = 0;
}
}
else if (flags == 2)
{
stop_num = 0;
flags = 0;
}
测试
所以只要向有名管道/tmp/webcom写入danger就能连拍11张照片,写入one就拍一张照片。
#echo one > tmp/webcom
#ls /pice/可以看到图片信息
注:拍照功能实现:
mjpg_streamer -i "/mjpg/input_uvc.so -y" -o "/mjpg/output_http.so -w /www" -o "/mjpg/output_file.so -f /pice -d 15000" &
mjpg-streamer视频服务器移植的更多相关文章
- 基于mjpg_streamer视频服务器移植【转】
本文转载自:http://blog.csdn.net/wavemcu/article/details/7539560 MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名 ...
- 基于mjpg-streamer网络视频服务器移植
MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名. MJPEG 全名为 "Motion Joint Photographic Experts Group&q ...
- arm开发板6410/2440上mjpg-streamer网络视频服务器移植
摄像头移植 一.环境 主机环境 :ubuntu 10.10 目标板 :FS-S5PC100 主机工具链 :gcc-4.4.5 交叉工具链 :arm-unknown-li ...
- 嵌入式Linux的web视频服务器的构建
http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...
- dash视频服务器本地搭建 (初探)
2019-4-17 15:54:17 星期三 技术说明: dash: 将一个大视频分解成不同分辨率, 不同清晰度的小视频, 以及一个描述文件(后缀: mpd), 根据网络带宽自动调整视频流, 看起来更 ...
- Boa服务器移植
Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右.作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求.但Boa支持CGI,能够为C ...
- 嵌入式boa服务器移植
开发板:EDUKIT-III实验箱,S3C2410+LINUX2.4,实验箱随箱光盘提供的Zimage,nor flash启动. 主机:ubnutn10.4LTS,arm-linux-gcc 2.95 ...
- 基于JT/T 1078协议设计和开发部标视频服务器
交通部与2016年10月份推出了JT/T 1078-2016标准,全称是<道路运输车辆卫星定位系统视频通信协议>.该标准将改变以往两客一危车辆的视频监控设备通信协议都是设备厂商私有协议的局 ...
- iTOP-IMX6UL 实战项目:ssh 服务器移植到 arm 开发板
实验环境:迅为提供的Ubuntu12.04.2 以及虚拟机 编译器:arm-2009q3 编译器 开发板系统:QT系统 开发板使用手册中给Windows 系统安装了 ssh 客户端,给 Ubunt ...
随机推荐
- MyBatis6——一级缓存、二级缓存、逆向工程
查询缓存 一级缓存:同一个sqlSession对象 MyBatis默认开启一级缓存,如果用同样的sqlSession对象查询相同的数据,则会在第一次查询时向数据库发送SQL语句,并将查询的结果放入到S ...
- Pytorch 分割模型构建和训练【直播】2019 年县域农业大脑AI挑战赛---(四)模型构建和网络训练
对于分割网络,如果当成一个黑箱就是:输入一个3x1024x1024 输出4x1024x1024. 我没有使用二分类,直接使用了四分类. 分类网络使用了SegNet,没有加载预训练模型,参数也是默认初始 ...
- springboot打war包上传到阿里云的Linux服务器
下面的每一步应该都必不可少: 1.启动类 继承这个类,并且重新configure这个方法,return builder.sources(Code007Application.class); 2.pom ...
- Java中的输入"scanf",Scanner用法
1.输入程序 1)Scnner的初始用法: 1 import java.util.Scanner; 2 public class Textone { 3 public static void main ...
- NSArary自定义对象排序 NSComparator, compare
reference from :http://mobile.51cto.com/hot-434804.htm 1.构建Person类 Person.h @interface Person : NSOb ...
- Masonry与UITableView+FDTemplateLayoutCell搭配使用
打个小广告:本人开发了一个宠物相关的App,欢迎大家下载体验~ 下载二维码: 进入正文: 之前发过一篇博客,也是对这两个的练习使用,但是之后遇到些问题,所以删除重写了.抱歉 Masonry是一款轻量级 ...
- 【富文本、JS】将接口传来的全部纯URL替换为富文本插件能识别到的img标签
replaceURLWithImage (text) { var a = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0 ...
- k-近邻算法采用for循环调参方法
//2019.08.02下午#机器学习算法中的超参数与模型参数1.超参数:是指机器学习算法运行之前需要指定的参数,是指对于不同机器学习算法属性的决定参数.通常来说,人们所说的调参就是指调节超参数.2. ...
- 攻防世界--web新手练习区(1)
1. 题目描述:X老师想让小明同学查看一个网页的源代码,但小明却发现鼠标右键不管用了. http://111.198.29.45:53629 通过阅读题目描述分析,我们需要查看源码,但是鼠标右键 ...
- Kubernetes——容器集群
kuberneteskubernetes(k8s)是google的容器集群管理系统,在docker的基础之上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整的功能,提高了大规模容 ...