源码地址为:https://github.com/jacksonliam/mjpg-streamer

Mjpg简介:

(1)mjpg-streamer是一个命令行应用程序,它将JPEG帧从一个或多个输入插件复制到多个输出插件。它可用于通过基于IP的网络将JPEG文件从网络摄像头流式传输到各种类型的查看器,如Chrome,Firefox,Cambozola,VLC,mplayer和其他能够接收MJPG流的软件。

(2)它最初是为嵌入式设备编写的,在RAM和CPU方面资源非常有限。其前身“uvc_streamer”的创建是因为Linux-UVC兼容相机直接生成JPEG数据,即使是运行OpenWRT的嵌入式设备,也可以实现快速和流畅的M-JPEG流。输入模块“input_uvc.so”从连接的网络摄像头捕获这样的JPG帧。mjpg-streamer现在支持各种不同的输入设备

源码树为:

└─mjpg-streamer
    └─mjpg-streamer-experimental
        ├─cmake
        ├─plugins
        │  ├─input_control
        │  ├─input_file
        │  ├─input_http
        │  ├─input_opencv
        │  │  └─filters
        │  │      ├─cvfilter_cpp
        │  │      └─cvfilter_py
        │  │          └─cmake
        │  ├─input_ptp2
        │  ├─input_raspicam
        │  │  └─mmal
        │  │      ├─core
        │  │      ├─util
        │  │      └─vc
        │  ├─input_testpicture
        │  │  └─pictures
        │  ├─input_uvc
        │  ├─output_autofocus
        │  ├─output_file
        │  │  └─examples
        │  ├─output_http
        │  ├─output_rtsp
        │  ├─output_udp
        │  ├─output_viewer
        │  └─output_zmqserver
        ├─scripts
        └─www

其中:

下载后如图所示,主要是  plugins, www, mjpg_streamer.h 头文件跟mjpg_streamer.c源码

其他都是一些打包方式,让我觉得满意的是有了ros_mjpg ,以及Dockerfile,真的是应用很广。

解释一下这些文件大概含义:

plugins目录: 一些usb摄像头的数据采集和传输的功能子函数,主要是input和output方式

www目录:主要是在使用浏览器浏览时,html界面上一些功能。

mjpg-streamer.c & .h:主要实现命令参数的解析及调用相关线程运行功能子函数

有了上文大概了解,使用也很方便;

这里,通过Raspberry  3B+ 进行介绍:(暂时使用局域网内进行图像传输,其实后面可以通过配置完成全网可视)

1.更新树莓派

sudo apt-get update  && sudo  apt-get  upgrade -y

更新很快,如果您的镜像使用国可能有点慢-->> 可以跟我一样换成国内镜像。

2.开启摄像头

sudo raspi-config    (必须sudo ) 然后选择 ‘5 interfacing options’中的‘camera’然后enable,之后树莓派将重启(需要重启)(步骤如下图)

3.查看是否配置好摄像头

ls  /dev

此命令,通过ls /dev 查外设,若出现 video0  可证明摄像头已经被树莓派检测到

4.安装必要库

sudo apt-get update
sudo apt-get install subversion
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev
sudo apt-get install cmake
sudo apt-get install git

5.下载开源包

sudo git clone https://github.com/jacksonliam/mjpg-streamer.git

 6.编译安装

sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
make all
sudo  make install

编译安装过程可能有一点慢,建议不使用多线程编译,可能出错

7.运行

./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -n -y -f 25 -r 640x480" -o "./output_http.so -n -w /usr/local/www"

出现上图,可证明已经运行成功

 8.打开网页  浏览器输入‘树莓派的ip:8080’即可进入mjpg-streamer界面(如下图)

mjpg-stream 视频服务 (1)| 简介与配置树莓派使用的更多相关文章

  1. Xinetd服务的安装与配置

    Xinetd服务的安装与配置 http://blog.chinaunix.net/uid-21411227-id-1826885.html 1.什么是xinetd xinetd即extended in ...

  2. Xinetd服务的安装与配置详解

    1.什么是xinetd xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器.经常用来管理多种轻量级Interne ...

  3. iNeuOS工业互联平台,.NETCore开发的视频服务组件iNeuVideo,RTSP转WebSocket

    目       录 1.      概述... 2 2.      将来集成到iNeuOS平台演示... 3 3.      iNeuVideo结构... 3 4.      iNeuVideo部署及 ...

  4. 短视频服务大PK,阿里云、腾讯云、又拍云、七牛云、金山云5强横向对比

    继直播后,短视频又再次爆发,在这个风口,国内的各大云厂商也都相继推出了自己的一站式短视频解决方案.上周由于公司短视频功能开发的需要,对比了阿里云.腾讯云.又拍云.七牛云.金山云5家的短视频服务. 先介 ...

  5. Linux DNS原理简介及配置

    Linux DNS原理简介及配置 DNS简介 DNS原理 域名解析的过程 资源记录 DNS BIND安装配置 一.简介 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访 ...

  6. CentOS 7 Apache服务的安装与配置

    原文出处:http://blog.51cto.com/13525470/2070375 一.Apache简介 Apache 是一个知名的开源Web服务器.早期的Apache服务器由Apache Gro ...

  7. CentOS 7 Tomcat服务的安装与配置

    3422人阅读  http://blog.51cto.com/13525470/2073657 一.Linux下的Java运行环境 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由S ...

  8. CentOS 7 Apache服务的安装与配置(转)

    https://blog.51cto.com/13525470/2070375 一.Apache简介 Apache 是一个知名的开源Web服务器.早期的Apache服务器由Apache Group来维 ...

  9. Linux防火墙简介 – iptables配置策略

    Linux防火墙简介 – iptables配置策略 Netfilter/iptables简介 要想真正掌握Linux防火墙体系,首先要搞清楚Netfilter和iptables的关系,Netfilte ...

随机推荐

  1. Spring Cloud 入门系列(一)

    前言 Spring Could作为目前最流行基于Java开发的构建微服务的完整框架.发现目前相关系列教程太少,本文是基于官网教程做的一套翻译. 何为Spring Cloud? Spring Cloud ...

  2. UWP 使用新版画中画 FontIcon —— 如何使用自定义字体 —— 简单分析Windows Calculator源代码

    微软在新版UWP计算器中加入了一个“置顶”功能,它相当于我们之前看视频的“画中画”一样. 点击后窗体置顶,同时可以进行其他任务. 有的小伙伴说,不就是一个图标吗,去 Segoe MDL2 图标 把图标 ...

  3. 在C#中调用Python中遇到的坑(No module named xxx)

    例如Python的代码是这个样子的. # coding=<utf-> # -*- coding: utf- *- import requests import urllib def Cle ...

  4. SpringBoot应用入门

    一.项目搭建 使用IDEA,点击create new project,然后左边的spring initializr,右边SDK1.8,URL:https://start.spring.io,next ...

  5. 就个人银行账户管理程序谈谈C++和Java的异同

    4_9 同: Java和C++都是面向对象的语言.都有数据成员,方法,访问权限的概念. 异: 访问权限上,非private时Java的默认访问权限是包.而C++的默认访问权限是private.Java ...

  6. PHP代码审计辅助脚本

    #!/usr/bin/env python import sys import os def main(): print ''' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ...

  7. [NOIp2017] luogu P3952 时间复杂度

    跪着看评测很优秀. 题目描述 给你若干个程序,这些程序只有 For 循环,求这些程序的时间复杂度. Solution 大模拟.讲下细节. flag[i]flag[i]flag[i] 表示第 iii 位 ...

  8. STL的vector略解

    本文部分内容参考于这儿. vector 的基础知识,上文已经阐述地很详尽了.笔者谨给出 vector 的声明及其常用函数. 代码抬头需包含 #include<vector> using n ...

  9. ES6入门之变量的解构赋值(二)

    前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...

  10. g_pLog

     g_pLog = new CLog("log");  g_pLog->Enable();  g_pScrLog = new CLog("data"); ...