本帖最后由 KawhiLeonard 于 2020-3-29 23:13 编辑
毕业设计就是搞这个,其实并不太难,但是做的时候还有原来构思的时候,不知道很多东西,所以觉得难罢了。
所以需要移植JPEG库,下载的安装包解压之后
- 配置:./configure --prefix=/home/ljh/jpeg --host=arm-linux-gnueabihf,就会生成Makefile
- 然后make编译
- 最后make install,就会在各个prefix指定的目录下,有四个文件夹,分别是bin,include,lib,share。
把出来的库文件全部放到开发板的环境变量中,或者可以粗暴一点,直接弄到/lib中。
jpeg的就这样了。
==========================
==========================
然后是mjpg-streamer,网上很多源码都是有漏洞的,特别是有一个很多人参考的,现在工程移植到了github,我发现有一个很关键的Makefile是没了,关键是,没有这个Makefile,居然还能用,我交叉编译出来的,还是个x86的,说明有些Makefile根本没起作用。
别管了,用我的这一个吧,步骤其实很简单,很多博客也是有的。
第一步:
首先修改所有Makefile的编译工具链。一个一个改就是瞧不起我强大的sed命令咯?
sed -i 's/CC = gcc/CC = arm-linux-gnueabihf-gcc/g' `grep -rl "CC = gcc" .`
修改交叉编译工具链
第二步:
修改plugins中input_uvc目录下的Makefile文件
修改
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/ljh/jpeg/include
修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
为
$(CC) $(CFLAGS) -ljpeg -L/home/ljh/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
红色的是你的jpeg的两个目录,一个是头文件路径,一个是库文件路径
] /***在这里我第一次第二次移植的时候会出现些问题,但是成功的这一次没有,有可能会提示你找不到jpedlib.h文件,但是你明明设置对了头文件路径,也明明在里面,但是他就是说没找到,这里可以很粗暴的,直接在代码中,用决定路径来包含头文件 #include "xxx/xxx/jpeglib.h",当然这个对移植性很不好。***/
第三步:
直接make,成功(哇,太突然了吧,用file查看是不是ARM架构的了)
拷贝mjpg根目录下的所有.so文件到开发板上,mjpg-streamer拷贝到开发板的bin目录
最后,amazing时刻 mjpg_streamer -i "/home/root/mjpg/input_uvc.so -d /dev/video0 -y -r 640x480 -f 10" -o "/home/root/mjpg/output_http.so -w ./www"
我用的是OV摄像头,是YUYV格式的,所以需要-y,在我的板子里面是video0,-r用于指定尺寸,命令其实和树莓派用mjpg是差不多的,-w ./www可以输出到局域网查看,谷歌或者火狐浏览器中http://开发板的IP:8080/?action=stream,IP填你自己的开发板IP,必须同一个局域网。
现在在想怎么突破局域网限制,可能是用到boa等嵌入式web服务器,不知道大家有没有好的方案可以做到呢
|