MJPG简介:

  MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名.

  MJPEG

  全名为 "Motion Joint Photographic Experts Group",是一种视频编码格式,

  Motion JPEG技术常用与闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,并存储在硬盘上。典型的应用如数字视频记录器等。MJPEG不像MPEG,不使用帧间编码,因此用一个非线性编辑器就很容易编辑。MJPEG的压缩算法与MPEG一脉相承,功能很强大,能发送高质图片,生成完全动画视频等。但相应地,MJPEG对带宽的要求也很高,相当于T-1,MJPEG信息是存储在数字媒体中的庞然大物,需要大量的存储空间以满足如今多数用户的需求。因此从另一个角度说,在某些条件下,MJPEG也许是效率最低的编码/解码器之一。

  MJPEG 是 24-bit 的 "true-color" 影像标准,MJPEG 的工作是将 RGB 格式的影像转换成 YCrCB 格式,目的是为了减少档案大小,一般约可减少 1/3 ~ 1/2 左右。

  MJPEG与MJPG的区别:

  1、mjpeg是视频,就是由系列jpg图片组成的视频。

  2、MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名.

一、环境

主机环境:ubuntu 10.04.4 LTS

目标机:YLE2410(S3C2410)

        主机工具链:gcc-4.3.2

        交叉工具链:arm-none-linux-gnueabi-gcc-4.3.2

        摄像头:ZC301

二、移植过程

1、配置内核是内核支持芯片为ZC301的摄像头

        Make menuconfig

                Device Drivers ---> 

                        <*> Multimedia support --->

                                <*> Video For Linux 

                                [*] Enable Video For Linux API 1 (DEPRECATED) (NEW)

                                [*] Video capture adapters (NEW) --->

                                        [*] V4L USB devices (NEW) ---> 

                                                <*> USB Video Class (UVC) 

                                                [*] UVC input events device support (NEW)

                                        <*> USB ZC0301[P] webcam support (DEPRECATED)

2、重新编译内核

make zImage

通过上面两个步骤就可以驱动我们的摄像头了。但是这个驱动是基于V4l2的。以前基于V4L的一些上层应用就不能用了,或需要做大量的修改!这里我们要实现网络视频的功能,以前都是用servfox这个网络视频服务器,但是这个服务器就是基于V4L的,我们如果想用的话就得对servfox的源码进行修改。这里我们选用另外一种方案mjpg-stream。

3、mjpg-stream的移植

关于mjpg-stream的资料大家可以在下面这个网址查看:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page

source code的网址是:http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/

mjpg-stream的移植需要jpeg的库,所以我们先移植jpeg的库

(1)jpeg库的移植

1)jpeg源码包通过下面这个网址下载

                http://www.ijg.org/files/jpegsrc.v8b.tar.gz

                2)解压源码包

                tar xvf jpegsrc.v8b.tar.gz

                3)配置源码

                cd jpeg-8b

                ./configure --prefix=/home/linux/s3c2410-2.6.35/video/jpeg --host=arm-none-linux-gnueabi

                4)编译

                make

                5)安装

                make install

                6)拷贝库到文件系统中

                cp //home/linux/s3c2410-2.6.35/video/jpeg /lib/libjpeg.so.8 /source/rootfs/lib

(2)mjpg-stream的移植

1)mjpg-stream源码包通过下面这个网址下载

                http://sourceforge.net/projects/mjpg-streamer/ 

                2)解压源码

                tar xvf mjpg-streamer-r63.tar.gz

                3)修改源码

                cd mjpg-streamer-r63

                修改顶层makefile及plugins目录中的各级makefile将所有

                CC=gcc

                修改为

                CC=arm-none-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/s3c2410-2.6.35/video/jpeg/include

                修改

                $(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

                为

                $(CC) $(CFLAGS) -ljpeg -L/home/linux/s3c2410-2.6.35/video/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

jpeg_utils.c:27: fatal error: jpeglib.h: No such file or directory

                4)编译

                make

                5)测试

                mkdir /source/rootfs/mjpg

                cp *.so /source/rootfs/mjpg

                cp mjpg-stream /source/rootfs/bin

打开开发板运行

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

                在源码目录下有start.sh,这个脚本里有一些mjpg-stream的使用方法及说明

打开一个网页输入下面地址就能够看到一个视频(开发板的IP为192.168.1.202):

                http://192.168.1.202:8080/?action=stream 

                打开一个网页输入下面地址就能够看到一个静态图片:

                http://192.168.1.202:8080/?action=snapshot 

                6)在mjpg源码下有一个www的目录,这个一个网络使用mjpg的实例,结合web服务器(boa)可以实现一些其他相关功能。

基于mjpg-streamer网络视频服务器移植的更多相关文章

  1. arm开发板6410/2440上mjpg-streamer网络视频服务器移植

    摄像头移植 一.环境 主机环境 :ubuntu 10.10         目标板 :FS-S5PC100 主机工具链 :gcc-4.4.5         交叉工具链 :arm-unknown-li ...

  2. 基于mjpg_streamer视频服务器移植【转】

    本文转载自:http://blog.csdn.net/wavemcu/article/details/7539560 MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名 ...

  3. mjpg-streamer视频服务器移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y JPEG库的移植 对于内核linux-2.6.35,不能再使用servfox,如果要使用的需要修改大量的代码.在此选用新的 ...

  4. APP Inventor 基于网络微服务器的即时通信APP

    APP Inventor 基于网络微服务器的即时通信APP 一.总结 一句话总结:(超低配版的QQ,逃~) 1.APP Inventor是什么? google 傻瓜式 编程 手机 app App In ...

  5. 基于JT/T 1078协议设计和开发部标视频服务器

    交通部与2016年10月份推出了JT/T 1078-2016标准,全称是<道路运输车辆卫星定位系统视频通信协议>.该标准将改变以往两客一危车辆的视频监控设备通信协议都是设备厂商私有协议的局 ...

  6. 基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发

    基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发 安徽京准科技提供@请勿转载@@ 更多资料请参考——ahjzsz.com 天文观测设备对于控制系统的时间准确度有严格要求.为此,采用搭建高精 ...

  7. 嵌入式Linux的web视频服务器的构建

    http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...

  8. (转)从集中到分布,解读网络视频IT架构变迁

    2006年以视频网站为代表的网络视频行业迅速崛起,IPTV.视频分享网站.视频搜索网站.提供视频服务的互动社区.交友.播客等等新兴媒体发展迅猛.网络视频行业现已成为众多资本机构关注与投资的焦点.但是在 ...

  9. 【转】网络视频监控P2P解决方案

    一.摘要 本文分析了日益增长的民用级别家庭和个人网络视频监控市场的需求特点,并给出了一种经济可行易于大规模部署的P2P解决方案. 由于篇幅有限,本文只给出了方案的思路,未对更深入的技术细节做详细的论述 ...

随机推荐

  1. RHCE学习笔记 管理1 (第六章 第七章)

    第六章 利用linux 文件系统权限文件访问 1.linux文件系统权限 文件的权限分为:  rwx  读/写/执行 ls -l  /home   查看/home下文件 ls -ld /home   ...

  2. centos7下安装tomcat7

    1 安装说明安装环境:CentOS-7.0.1611安装方式:源码安装软件:apache-tomcat-7.0.75.tar.gz 下载地址:http://tomcat.apache.org/down ...

  3. json前后台传输,以及乱码中文问题探讨

    背景介绍: 我现在的工作是做传统项目开发,没有用到框架.最近在做项目时,经常需要使用ajax从后台拿数据到前台,是json格式的.先说下我在项目中遇到的问题吧,前台拿到了数据,需要将其转化为对象,我使 ...

  4. mysql服务器3306端口不能远程连接的解决

    1.网络检测   1)ping主机可以:   2)telnet 主机3306端口不可以:     telnet 主机22端口可以:   说明与本机网络没有关系: 2.端口检测   1)netstat ...

  5. python爬虫-韩寒新浪博客博文

    博客地址:http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html 爬第一页博文 #-*-coding:utf--*- import re # ...

  6. Spark基本概念快速入门

      Spark集群 一组计算机的集合,每个计算机节点作为独立的计算资源,又可以虚拟出多个具备计算能力的虚拟机,这些虚拟机是集群中的计算单元.Spark的核心模块专注于调度和管理虚拟机之上分布式计算任务 ...

  7. review41

    套接字是基于TCP协议的网络通信. 基于UDP

  8. html5学习笔记(audio)

    来源于<HTML5高级程序设计> audio api <audio controls> controls告诉浏览器显示播放控件 不指定 type 浏览器自解 oggMP3 ty ...

  9. ScrollView垂直滚动控件

    ScrollView垂直滚动控件 一.简介 二.方法 1)ScrollView垂直滚动控件使用方法 1.在layout布局文件的最外层建立一个ScrollView控件 2.在ScrollView控件中 ...

  10. Prism 文档 第二章 初始化Prism应用程序

                                                                           第二章 初始化Prism应用程序 本章将讨论为了使一个Pr ...