树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像

网上有很多关于mjpg-stream移植到树莓派的文章,大部分还是使用的sourceforge.net上的mjpg-streamer-r63.tar.gz,该工程版本比较老,在新版系统中编译需要把源码文件中所有 #include<linux/videodev.h>都修改为 #include<linux/videodev2.h> 或者 sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h。改完编译还是会遇到error(文章里提示可以忽略,不需完全编译,用目前编译出来的文件已经可以用)。

下面的文字是使用github上jacksonliam的mjpg-streamer-experimental,在树莓派新版系统上可以进行完全编译,适合强迫症患者。而且还能支持树莓派的专用摄像头Pi Cam。

项目工程:https://github.com/jacksonliam/mjpg-streamer

将工程下载后,传送到树莓派系统中解压:

 unzip mjpg-streamer-master.zip

编译此工程需要用到cmake:

sudo apt-get install cmake

编译前,还需要安装支持库:

sudo apt-get install libjpeg8-dev

然后进入工程mjpg-streamer-experimental,进行完全编译:

make clean all

进入树莓派设置菜单:

sudo raspi-config

移动到第五项“Enable Camera”,回车进入,按tab键切换到“Enable”回车确认。回到主菜单,tab键切换到“Finish”回车确认。树莓派会自动重启。

重启完毕进入系统,命令行进入mjpg-streamer-experimental目录,使用下面指令启动普通USB摄像头:

./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"

启动树莓派专用摄像头RaspiCamera的指令是:

./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"

某些摄像头在执行这个指令时会有报错,至少要是最后没有退回到命令行提示符,而且显示“Starting ouput”,就表示成功了。

查看图像,在PC端打开浏览器,输入下面网址可以看到静态截图:

http://<树莓派IP>:8080/?action=snapshot

输入下面两条网址可以看到动态图像:

http://<树莓派IP>:8080/?action=stream

动态图像的这个地址在有的浏览器不太好使,可以使用下面这个网址:

http://<树莓派IP>:8080/javascript_simple.html

PS:使用莓派专用摄像头RaspiCamera的时候动态图像画面会非常卡,大概1.4帧/秒,建议使用静态捕捉。

[转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像的更多相关文章

  1. 【树莓派】树莓派新版系统SSH连接被拒绝问题处理

    安装好新的版本树莓派(NOOBS_v2_4_0.zip)之后,直连显示器并接上网线,可以看到已经获取到动态IP地址了. 但是,此时使用xshell远程连接时,却一直连接不成功: [d:\~]$ Con ...

  2. 解决树莓派新版系统 ssh连接不了问题

    一.解决办法 由于有连接了显示器,所以可以直接输入命令行开启树莓派的SSH,并且使用putty连接就可以. sudo service ssh start sudo service ssh sttus ...

  3. 【转载】在Centos系统上采用二进制文件部署Node.js环境

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...

  4. 在香蕉派的树莓派系统上配置 Syncthing 自启动

    在香蕉派的树莓派系统上配置 Syncthing 自启动 —— 魏刘宏 2020 年 1 月 19 日 首先做个名词解释,” 香蕉派” 是国内一款山寨树莓派的硬件产品,” 树莓派系统” 指的是”rasp ...

  5. [转载]如何在Ubuntu上安装LAMP服务器系统

    [2013年7月25日 51CTO外电头条]为何应该在Ubuntu上安装LAMP服务器?从事Web开发工作时,我更偏爱在不受干扰的情况下,在我那台计算机上的开发环境下进行开发.我宁愿所犯的错误大部分是 ...

  6. Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务(转载6)

    Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务 一.引言 今天本来没有打算写这篇文章,但是,今天测试Redis的时候发现了两个问题 ...

  7. Redis进阶实践之三如何在Windows系统上安装安装Redis(转载)

    Redis进阶实践之三如何在Windows系统上安装安装Redis 一.Redis的简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括 ...

  8. Redis进阶实践之二如何在Linux系统上安装安装Redis(转载)(2)

    Redis进阶实践之二如何在Linux系统上安装安装Redis 一.引言 上一篇文章写了“如何安装VMware Pro虚拟机”和在虚拟机上安装Linux操作系统.那是第一步,有了Linux操作系统,我 ...

  9. 在树莓派(Raspberry Pi)上编译安装更新版本的Python

    Raspiban Wheezy上预装的Python3版本是3.2.3,本文将介绍升级到3.4.3的方法. 此文也适用于安装其它版本(比如最新版本)的Python. 我用的是B+型的树莓派,装的系统是2 ...

随机推荐

  1. 023——VUE中数据排序sort() / 数据反转 reverse() 的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. C++/C extern关键字详解 EntryPointNotFoundException处理

    最近在弄C#帮公司做一个图像识别的功能,用到了第三方的dll,在调用dll过程中就出现了一个问题.EntryPointNotFoundException异常.遇到这种异常,很大可能就是在生成dll时函 ...

  3. 记用ajax网页跳转大坑——后台执行了,但是没有跳转

    搭建javaweb服务器的时候,把jsp文件放在WEB-INF目录下面,因为超链接不能所有只能通过拦截器,用do方法跳转 controller写的是对的: @Controller public cla ...

  4. jsp中把js变量赋给java变量,或者将java变量赋给js变量怎么做?

    在jsp中经常会遇到把js变量赋给java变量,或者将java变量赋给js变量的情况,在此将通用的处理方法小结如下: java变量传给js好办,var a=”<%=javaParam%>“ ...

  5. 添加机构organizations模块

    startapp organizations models内容: from django.db import models from datetime import datetime # Create ...

  6. python函数作用域

    python中函数作用域 在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_ ...

  7. 【剑指offer】把二叉树打印成多行,C++实现

    原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目       从上到下按层打印二叉树,同一层结点从左至右输出,每一层输出一行.例如:下面二叉树的 ...

  8. C语言共用体union

    union共用体说明: 当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度的整数倍. 比如union中有{int x; double x1; char name[10] ...

  9. Git-Svn 建立工作目录

    使用Git-SVN 建立工作目录 GIT-SVN可以以SVN的版本为基础, 实现”私有”的版本管理功能. 这样一些不成熟但又需要记录的版本就不必提交到SVN上, 而只在自己本地私有的版本里出现. 下面 ...

  10. js判断当前浏览类型

    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isOpera = userAgent.indexOf("Opera ...