先编译jpeg-6b
./configure CC=arm-linux-gcc --host=arm-unknown-linux --prefix=/path/to/jpeg_installed --enable-shared --enable-static
make
make install
编译好后将安装目录/lib下的所有文件复制到mjpeg_streamer的安装目录
mjpeg_streamer编译:
修改plugins/input_uvc/Makfile,
CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/path/to/jpeg_installed
修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
为
$(CC) $(CFLAGS) -ljpeg -L/path/to/jpeg_installed -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
make CC=arm-linux-gcc
这里特别说明几点:
1.之前用了一个摄像头,通过查ID确认是UVC摄像头,在PC上也能用,但在板子上怎么也不行,就是不能自动生成/dev/video0,编译内核无数遍,各种选项都试了(最后事实证明,只需要UVC那个选项和一些必选的video方面的东西就够了).而且每次摄像头插上,提示:
usb 1-1.2: new full speed USB device using s3c2410-ohci and address 3
usb 1-1.2: unable to read config index 0 descriptor/start: -61
usb 1-1.2: chopping to 0 config(s)
usb 1-1.2: New USB device found, idVendor=0c45, idProduct=6340
usb 1-1.2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
usb 1-1.2: Product: USB 2.0 Camera
usb 1-1.2: Manufacturer: Sonix Technology Co., Ltd.
usb 1-1.2: no configuration chosen from 0 choices
尤其最后这句,看着不正常,但就是解决不了,然后换了个摄像头,马上好了,我真xx想骂人,
正常的摄像头:
usb 1-1.4: New USB device found, idVendor=1871, idProduct=0d01
usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.4: Product: USB2.0 Camera
usb 1-1.4: Manufacturer: AVEO Technology Corp.
uvcvideo: Found UVC 1.00 device USB2.0 Camera (1871:0d01)
input: USB2.0 Camera as /class/input/input0
2.关于浏览器,摄像头好了,mjpeg_streamer也能跑起来了,这里注意如果摄像头不支持mjpeg,则要在输入input_uvc.so 后面加上-y选项,使用yuc模式
然后浏览器输入http://192.168.2.20:8080/?action=stream死活没反应,用的是谷歌浏览器,换成firefox马上又好了,真他吗气人...
export LD_LIBRARY_PATH=`pwd`
./mjpg_streamer -i "input_uvc.so -y " -o "output_http.so -p 8080 -w ./www"
一些错误:
安装libtool-dev ,如果仍然报下面的错,就去/usr/share/libtool/config/下复制config.sub 和config.guess到当前目录,覆盖原来的文件
make: ./libtool: Command not found
make: *** [jcapimin.lo] Error 127
在jpeg-6b的安装目录mkdir include lib man man/man1等目录,否则会报一堆下面的错误
./libtool --mode=install /usr/bin/install -c libjpeg.la /home/huniu/sources/mjpeg_streamer/jpeg-6b-build/lib/libjpeg.la
/usr/bin/install -c .libs/libjpeg.so.62.0.0 /home/huniu/sources/mjpeg_streamer/jpeg-6b-build/lib/libjpeg.so.62.0.0
/usr/bin/install: cannot create regular file `/home/huniu/sources/mjpeg_streamer/jpeg-6b-build/lib/libjpeg.so.62.0.0': No such file or directory
make: *** [install-lib] 错误 1
这个问题移植解决不了,由于我的摄像头是uvc的,用不到gspca,所以干脆就修改makefile,把这个模块去掉不编译.
spcav4l.h:134: error: field 'vmmap' has incomplete type
spcav4l.h:135: error: field 'videocap' has incomplete type
spcav4l.h:137: error: field 'videombuf' has incomplete type
spcav4l.h:138: error: field 'videopict' has incomplete type
spcav4l.h:139: error: field 'videowin' has incomplete type
spcav4l.h:140: error: field 'videochan' has incomplete type
spcav4l.c: In function 'convertframe':
spcav4l.c:162: error: 'VIDEO_PALETTE_YUV420P' undeclared (first use in this function)
spcav4l.c:162: error: (Each undeclared identifier is reported only once
spcav4l.c:162: error: for each function it appears in.)
spcav4l.c:165: error: 'VIDEO_PALETTE_RGB24' undeclared (first use in this function)
spcav4l.c:168: error: 'VIDEO_PALETTE_RGB565' undeclared (first use in this function)
spcav4l.c:171: error: 'VIDEO_PALETTE_RGB32' undeclared (first use in this function)
spcav4l.c: In function 'v4lGrab':
spcav4l.c:200: error: 'VIDIOCSYNC' undeclared (first use in this function)
spcav4l.c:236: error: 'VIDIOCMCAPTURE' undeclared (first use in this function)
spcav4l.c: In function 'GetVideoPict':
spcav4l.c:294: error: 'VIDIOCGPICT' undeclared (first use in this function)
spca