安裝過程大部分是參考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/