天天看點

在64位ubuntu12.04中安裝mjpg-streamer實作網絡監控

安裝過程大部分是參考firefoxbug的一系列文章,

http://blog.csdn.net/firefoxbug/article/details/7524728

隻是針對編譯過程中我遇到的問題增加了一點東西。因為我的ubuntu裝的是CD版,是以好多包都沒有裝。按照這個流程應該能很快裝好

一、先獲得源碼

[[email protected]:~$]svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer

應該有這些:

[[email protected]:~/mjpg-streamer$] ls

doc           mjpg-streamer               udp_client

mjpeg-client  mjpg-streamer-experimental  uvc-streamer

二、編譯mjpg-streamer

[[email protected]:~/mjpg-streamer/mjpg-streamer-experimental$] make

問題來了,先是報找不到jpeglib.h。裝libjpeg-dev包可以解決。

然後可能會報convert:not found,這個是因為沒有裝imagemagick包。

編譯通過後,還不能運作,還要繼續編譯UVC-streamer。

另外,如果攝像頭不支援mjpg隻支援YUV的話(我的是聯想Y460帶的,貌似不支援mjpg),最好在編譯前就去改下/mjpg-streamer-experimental/plugins/input_uvc/中的input_uvc.c檔案。

int input_init(input_parameter *param, int id)

{

    char *dev = "/dev/video0", *s;

    int width = 640, height = 480, fps = -1, format = V4L2_PIX_FMT_MJPEG, i;

    if(pthread_mutex_init(&cams[id].controls_mutex, NULL) != 0) {

        IPRINT("could not initialize mutex variable\n");

        exit(EXIT_FAILURE);

    }

.......................

把format = V4L2_PIX_FMT_MJPEG改成format =V4L2_PIX_FMT_YUYV

就設定了預設的圖像格式,之後運作時就不會報錯了。如果不确定,那待會運作時如果報如下錯誤再回來改了重新編譯即可

Unable to set format: 1196444237 res: 640x480

 Init v4L2 failed !! exit fatal

 i: init_VideoIn failed

三、編譯UVC-streamer

[[email protected]:~/mjpg-streamer/uvc-streamer$] make

然後是各種 linux/videodev.h找不到,好像是2.6之後的核心改動過,videodev.h檔案沒了。這裡我的解決方法是将目錄裡uvc_stream.c, v4l2uvc.h, uvcvideo.h三個檔案中的

#include <linux/videodev.h>改成 #include <linux/videodev2.h>,

再編譯會報一堆

uvc_stream.c:(.text.startup+0x408): undefined reference to `pthread_create'錯誤,這是編譯時缺少-lpthread的原因,進去makefile中看了一下,貌似有啊,我調整了一下位置,這裡因人而異吧,将

uga_buga: $(OBJECTS)

$(CC) $(CFLAGS) $(LFLAGS) $(OBJECTS) -o $(APP_BINARY)

調整成

uga_buga: $(OBJECTS)

$(CC) $(CFLAGS) $(OBJECTS) -o $(APP_BINARY) $(LFLAGS)

好吧,編譯通過了。。。

四、運作。

[[email protected]:~/mjpg-streamer/mjpg-streamer-experimental$]./start.sh

本機檢視輸入 http://localhost:8080/

其它電腦檢視輸入:  http://本機ip:8080/

繼續閱讀