Linux下使用mjpg-streamer实现监控
2014-05-05 18:51
429 查看
现在需要让ZC301摄像头在Linux主机上跑起来,使用的是mjpg-streamer视频流服务器。
本人菜鸟,刚开始玩摄像头。通过三天不断的失败和查找之后才发现,2.6.38以后的内核版本已经移除了对 v4l1
的支持,也就是说在高版本内核的系统中的/usr/include目录下找不到头文件,会导致执行./configure的时候会出现错误:“configure:
error: Could not find linux/videodev.h”。
后来我按照网上的方法:把plugins目录下的.c和.h文件里的#include<
linux/videodev.h>都修改为#include<
linux/videodev2.h>,结果出现的错误更让人抓狂:
make[1]: 正在进入目录
`/home/linux/workdir/mjpg-streamer/mjpg-streamer/plugins/input_gspcav1'
gcc -c -O2
-DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -o spcav4l.lo
spcav4l.c
In file included
from spcav4l.c:25:
spcav4l.h:134:
错误: 字段‘vmmap’的类型不完全
spcav4l.h:135:
错误: 字段‘videocap’的类型不完全
spcav4l.h:137:
错误: 字段‘videombuf’的类型不完全
spcav4l.h:138:
错误: 字段‘videopict’的类型不完全
spcav4l.h:139:
错误: 字段‘videowin’的类型不完全
spcav4l.h:140:
错误: 字段‘videochan’的类型不完全
spcav4l.c:
在函数‘convertframe’中:
spcav4l.c:156:
错误: ‘VIDEO_PALETTE_YUV420P’未声明(在此函数内第一次使用)
spcav4l.c:156:
错误: (即使在一个函数内多次出现,每个未声明的标识符在其
spcav4l.c:156:
错误: 所在的函数内也只报告一次。)
spcav4l.c:159:
错误: ‘VIDEO_PALETTE_RGB24’未声明(在此函数内第一次使用)
spcav4l.c:162:
错误: ‘VIDEO_PALETTE_RGB565’未声明(在此函数内第一次使用)
spcav4l.c:165:
错误: ‘VIDEO_PALETTE_RGB32’未声明(在此函数内第一次使用)
......
现在先用2.6.35-22版本内核的Ubuntu测试,下次再用支持v4l2的内核版本测试。
一、环境
主机环境:ubuntu 10.10
内核版本:Linux ubuntu 2.6.35-22-generic
主机工具链:gcc version 4.4.5
摄像头:ZC301
(内核版本可以通过uname -a 查看:
Linux ubuntu 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19
20:34:50 UTC 2010 i686 GNU/Linux
摄像头型号可通过命令lsusb查看:
Bus 002 Device 007: ID 0ac8:301b Z-Star Microelectronics Corp.
ZC0301 Webcam)
二、JPEG库的安装
mjpg-stream的编译需要jpeg的库,所以我们先安装jpeg的库。
文件:jpegsrc.v8b.tar.gz
下载地址:http://www.ijg.org/files/jpegsrc.v8b.tar.gz
解压:tar -xvf jpegsrc.v8b.tar.gz
配置:./configure
编译:make
安装:make install
搞定!
三、mjpg-streamer的安装
文件:mjpg-streamer-r63.tar.gz
下载地址:http://sourceforge.net/projects/mjpg-streamer/
解压:tar -xvf mjpg-streamer-r63.tar.gz
进入:cd mjpg-streamer
编译:make clean all
指定库的路径:export LD_LIBRARY_PATH=.
运行:./mjpg_streamer -o "output_http.so -w
./www"
或者直接使用:./start.sh 代替上面最后两条命令。
然后就可以通过浏览器浏览摄像头的画面:
实时浏览:http://127.0.0.1:8080/?action=stream
拍照:http://127.0.0.1:8080/?action=snapshot
这是我的成果:
这次测试过程中,因为开了两个虚拟机的原因,导致忘记把摄像头接上当前使用的系统了,运行时出现错误:
MJPG Streamer Version: svn rev:
i: Using V4L2 device.:
/dev/video0
i: Desired Resolution: 640 x
480
i: Frames Per Second.: 5
i: Format............: MJPEG
ERROR opening V4L interface: No such
file or directory
Init v4L2 failed !! exit
fatal
i: init_VideoIn failed
其实就是因为摄像头没接上,导致/dev目录下没有找到设备video0。浪费了很多时间,大意啊。
本人菜鸟,刚开始玩摄像头。通过三天不断的失败和查找之后才发现,2.6.38以后的内核版本已经移除了对 v4l1
的支持,也就是说在高版本内核的系统中的/usr/include目录下找不到头文件,会导致执行./configure的时候会出现错误:“configure:
error: Could not find linux/videodev.h”。
后来我按照网上的方法:把plugins目录下的.c和.h文件里的#include<
linux/videodev.h>都修改为#include<
linux/videodev2.h>,结果出现的错误更让人抓狂:
make[1]: 正在进入目录
`/home/linux/workdir/mjpg-streamer/mjpg-streamer/plugins/input_gspcav1'
gcc -c -O2
-DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -o spcav4l.lo
spcav4l.c
In file included
from spcav4l.c:25:
spcav4l.h:134:
错误: 字段‘vmmap’的类型不完全
spcav4l.h:135:
错误: 字段‘videocap’的类型不完全
spcav4l.h:137:
错误: 字段‘videombuf’的类型不完全
spcav4l.h:138:
错误: 字段‘videopict’的类型不完全
spcav4l.h:139:
错误: 字段‘videowin’的类型不完全
spcav4l.h:140:
错误: 字段‘videochan’的类型不完全
spcav4l.c:
在函数‘convertframe’中:
spcav4l.c:156:
错误: ‘VIDEO_PALETTE_YUV420P’未声明(在此函数内第一次使用)
spcav4l.c:156:
错误: (即使在一个函数内多次出现,每个未声明的标识符在其
spcav4l.c:156:
错误: 所在的函数内也只报告一次。)
spcav4l.c:159:
错误: ‘VIDEO_PALETTE_RGB24’未声明(在此函数内第一次使用)
spcav4l.c:162:
错误: ‘VIDEO_PALETTE_RGB565’未声明(在此函数内第一次使用)
spcav4l.c:165:
错误: ‘VIDEO_PALETTE_RGB32’未声明(在此函数内第一次使用)
......
现在先用2.6.35-22版本内核的Ubuntu测试,下次再用支持v4l2的内核版本测试。
一、环境
主机环境:ubuntu 10.10
内核版本:Linux ubuntu 2.6.35-22-generic
主机工具链:gcc version 4.4.5
摄像头:ZC301
(内核版本可以通过uname -a 查看:
Linux ubuntu 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19
20:34:50 UTC 2010 i686 GNU/Linux
摄像头型号可通过命令lsusb查看:
Bus 002 Device 007: ID 0ac8:301b Z-Star Microelectronics Corp.
ZC0301 Webcam)
二、JPEG库的安装
mjpg-stream的编译需要jpeg的库,所以我们先安装jpeg的库。
文件:jpegsrc.v8b.tar.gz
下载地址:http://www.ijg.org/files/jpegsrc.v8b.tar.gz
解压:tar -xvf jpegsrc.v8b.tar.gz
配置:./configure
编译:make
安装:make install
搞定!
三、mjpg-streamer的安装
文件:mjpg-streamer-r63.tar.gz
下载地址:http://sourceforge.net/projects/mjpg-streamer/
解压:tar -xvf mjpg-streamer-r63.tar.gz
进入:cd mjpg-streamer
编译:make clean all
指定库的路径:export LD_LIBRARY_PATH=.
运行:./mjpg_streamer -o "output_http.so -w
./www"
或者直接使用:./start.sh 代替上面最后两条命令。
然后就可以通过浏览器浏览摄像头的画面:
实时浏览:http://127.0.0.1:8080/?action=stream
拍照:http://127.0.0.1:8080/?action=snapshot
这是我的成果:
这次测试过程中,因为开了两个虚拟机的原因,导致忘记把摄像头接上当前使用的系统了,运行时出现错误:
MJPG Streamer Version: svn rev:
i: Using V4L2 device.:
/dev/video0
i: Desired Resolution: 640 x
480
i: Frames Per Second.: 5
i: Format............: MJPEG
ERROR opening V4L interface: No such
file or directory
Init v4L2 failed !! exit
fatal
i: init_VideoIn failed
其实就是因为摄像头没接上,导致/dev目录下没有找到设备video0。浪费了很多时间,大意啊。
相关文章推荐
- Linux下安装boa(嵌入式web服务器…
- linux makefile 基础
- ebs 12.1.3 clone for linux6
- Linux 读取文件n行并删除方法
- linux如何修改主机名
- Android Camera子系统之Linux C应用开发者View
- Hadoop集群(第1期)_CentOS安装配置
- linux之find命令
- Linux--批量安装centos
- linux查找目录下的所有文件中是否含有某个字符串
- linux 内存溢出(oom)和内存泄漏(leak)
- 关于Linux系统中文件或目录的s、t权限位的说明
- 大话USB驱动之基础概念
- Linux 下卸载MySQL 5
- Linux Makefile学习之旅(1)----规则
- linux下获取ip地址的命令行
- linux下拷贝目录下的所有文件(文件夹)
- Linux hosts.allow与hosts.deny文件设置
- sprintf,snprintf的用法(可以作为linux中itoa函数的补充)
- Linux-dhcpd