【原创】IP摄像头技术纵览(五)—网络摄像头初试—mjpg-streamer移植与部署
本文属于《IP摄像头技术纵览》系列文章之一:
Author: chad
Mail: linczone@163.com
1、vgrabbj、spacview、Luvcview、mjpg-streamer评测对比
vgrabbj-0.9.6是基于v4l1设计的,与v4l2的API差别很大,该软件已经没有使用或参考价值。
spcaview 也相当古老,并且调用了SDL库,不适合嵌入式系统,不建议研究。
什么是SDL?
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
luvcview 该程序需要调用V4L2接口以及SDL库,可以进行视频采集与显示,有一定的参考价值。
我在ubuntu下测试情况如下:
摄像头格式为MJPEG,而luvcview默认格式为yuv,所以,在ubuntu上运行时使用命令:
./luvcview -f jpg
注:luvcview 编译时需要调用SDL库与pthread库。
强烈推荐:mjpg_streamer。
mjpg‐streamer是一个开源软件,用于从webcam摄像头采集图像,把它们以流的形式通过基于ip的网络传输到浏览器,关于它的介绍网上有一大堆,读者可自行了解;
mjpg-streamer 需要很少的CPU和内存资源就可以工作,大部分编码工作都是摄像头完成的,所以对于内存和性能都有限的嵌入式系统十分适用。网上关于它的移植也很多,下面给出移植的过程与在编译过程中出现的一些问题与解决方法。
在移植Mjpg-streamer之前必须移植好libjpeg;因为在mjpg-streamer源码包下的README文件中有下面一句话:
the input plugin “input_uvc.so” depends on libjpeg, make sure it is installed.