mjpeg_streamer on fl2440

本文档介绍了如何在fl2440上编译和配置mjpeg_streamer,涉及jpeg-6b的编译、mjpeg_streamer的修改以及解决USB摄像头与Linux系统的兼容性问题。遇到摄像头不支持mjpeg时,需要使用-y选项。浏览器端,Chrome可能无法显示,而Firefox可以正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先编译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

编译完成,复制 *.so和mjpeg_streamer可执行文件以及start.sh脚本到mjpeg_streamer安装目录就能用了


这里特别说明几点:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值