mjpeg_streamer on fl2440

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

先编译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' 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mjpg_streamer是一个开源的多线程实时流媒体服务器,可用于将应用程序产生的多种形式的视频流(如MJPEGJPEG以及YUV等)转换为HTTP流的格式,可通过网络从任何支持流媒体的设备或程序进行接收和播放。LCD则是液晶显示屏的简称,它是一种常用的显示设备,可以在各种电子设备中使用。 mjpg_streamer可以与LCD配合使用,通过将LCD设备与mjpg_streamer服务器连接,我们可以将来自摄像头或其他视频源的实时图像流转发到LCD显示屏上,从而实现图像的实时显示。 使用mjpg_streamer连接LCD的具体步骤如下: 1. 配置mjpg_streamer服务器,确保其能够接收并处理来自摄像头或其他视频源的流数据。 2. 将LCD连接到计算机或嵌入式设备,确保其正常工作。 3. 在mjpg_streamer服务器的配置文件中,指定将视频流输出到LCD设备。 4. 启动mjpg_streamer服务器,开始传输视频流到LCD设备。 5. 在LCD设备上,显示传输过来的视频流。可以根据需要进行调整和优化。 通过将mjpg_streamer和LCD结合使用,可以实现在LCD设备上显示来自摄像头或其他视频源的实时图像流。这在监控系统、视讯会议、机器视觉等领域具有广泛应用,为用户提供了方便快捷的图像展示方式。同时,通过调整mjpg_streamer服务器和LCD设备的配置,还可以实现多种不同的显示效果和功能,满足用户的个性化需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值