更新于2018年04月16日
参考文章:https://blog.csdn.net/xiongmaojiayou/article/details/7604746
Mjpeg‐stream介绍
Mjpeg‐stream 是一个开源软件,用于把mjpeg格式的文件变成流媒体输出。
1. 环境平台
PC机:vmware 虚拟机中安装的red hat 6 (已经配好交叉编译环境)
目标板:S3C2440
开发板上运行的系统: 内核 Linux‐2.6.32.2
2 . 在2440 上安装 mjpeg‐stream
mjpg-stream的移植需要基于jpeg的库,所以我们先移植jpeg的库 。
1) 下载源码包
感谢源码提供网站:http://www.ijg.org/files/
jpeg源码包可以通过下面这个网址下载 (2018年01月14日发布)
http://www.ijg.org/files/jpegsrc.v9c.tar.gz
2) 解压源码包
#tar xzvf jpegsrc.v9c.tar.gz
#cd jpeg-9c
3) 配置源码 ,下面的配置很重要(具体配置项可以运行命令./configure --help看看是什么意思,根据实际情况修改)
#./configure CC=arm-linux-gcc --host=arm-unknown-linux --prefix=/home/jpeg-9c/jpeg --enable-shared --enable-static
其中/home/jpeg-9c/jpeg是编译后安装的目录,根据实际情况修改
1) 下载mjpg-streamer源码
感谢源码提供网站:https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/
下载地址:(点击即可下载)
https://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip
2) 解压下载好的压缩文件,将其中的mjpg-streamer文件夹(如图所示),复制到虚拟机linux中。
在此假定复制到了/home 目录下
3) 修改源码
#cd /home/mjpg‐streamer ;进入该目录
#gedit plugins/input_uvc/Makefile ;修改plugins/input_uvc/目录下的Makfile文件,
修改 CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为 CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/jpeg-9c/jpeg/include
修改 $(CC) $(CFLAGS) -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
为 $(CC) $(CFLAGS) -L/home/jpeg-9c/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
注:/home/jpeg-9c/jpeg就是上面移植jpeg库后安装的目录
4、编译:make CC=arm-linux-gcc
注意:若出现 make: Nothing to be done for `all'. 则需先执行 make clean 命令。
5、在开发板建立mjpg-streamer安装目录
mkdir /usr/local/mjpg-streamer
将编译生成的 *.so文件,复制到开发板 /usr/local/mjpg-streamer目录;
将编译生成的可执行文件mjpg-stream,复制到开发板 /usr/local/mjpg-streamer目录
将源码目录中的start.sh和目录www拷贝到开发板 /usr/local/mjpg-streamer目录下,然后就可以测试啦
6、测试:
按照自己的需求修改开发板中的start.sh文件(start.sh文件里自带修改教程),然后运行start.sh;
(限同一局域网内)在PC机打开一个网页,输入http://192.168.12.21:8088/?action=stream就可以看到图像。
注:ip地址为开发板IP,端口为start.sh中配置的端口
7、获得帮助
获得帮助的方法在start.sh里有说明,以下举一个例子,运行./mjpg_streamer --help它会打印出以下帮助,可根据需要设置参数 QSIF QCIF CGA QVGA CIF VGA
SVGA XGA SXGA
or a custom value like the following
example: 640x480
[-f | --fps ]..........: frames per second
[-y | --yuv ]..........: enable YUYV format and disable MJPEG mode
[-q | --quality ]......: JPEG compression quality in percent
(activates YUYV format, disables MJPEG)
[-m | --minimum_size ].: drop frames smaller then this limit, useful
if the webcam produces small-sized garbage frames
may happen under low light conditions
[-n | --no_dynctrl ]...: do not initalize dynctrls of Linux-UVC driver
[-l | --led ]..........: switch the LED "on", "off", let it "blink" or leave
it up to the driver using the value "auto"
以上是mjpg-streamer的移植全过程。