host: ubuntu12.04 -64
平台allwiner-A10
1,安装gcc-arm-linux-gnueabihf
apt-get install gcc-arm-linux-gnueabihf ; pc 交差编译 arm 系统。
### arm-linux-gnueabihf-gcc -v
mjpg-stream的移植需要jpeg的库,所以我们先移植jpeg的库
(1)jpeg库的移植
1)jpeg源码包通过下面这个网址下载
http://www.ijg.org/files/jpegsrc.v8b.tar.gz
2)解压源码包
tar xvf jpegsrc.v8b.tar.gz
3)配置源码
cd jpeg-8b
./configure --prefix=/home/dou/jpeg --host=arm-linux-gnueabihf
4)编译
make
5)安装
make install
##复制/home/dou/jpeg 到a10,,/home/dou
6)拷贝libjpeg.s0.8库到开发板文件系统lib下中
2)mjpg-stream的移植
1)mjpg-stream源码包通过下面这个网址下载
http://sourceforge.net/projects/mjpg-streamer/
2)cp mjpg-streamer-r63.tar.gz 到A10板子上并解压源码
tar xvf mjpg-streamer-r63.tar.gz
3)修改源码
cd mjpg-streamer-r63
修改plugins/input_uvc/Makfile
修改
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/dou/jpeg/include
修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
为
$(CC) $(CFLAGS) -ljpeg -L/home/dou/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
4)编译
make
5)测试
在开发板上mkdir /mjpeg
拷贝*.so到开发板的mjpeg目录下,mjpg_streamer到开发板的bin下并改变权限
mjpg_streamer -i "/mjpeg/input_uvc.so -d /dev/video0" -o "/mjpeg/output_http.so"
10,出现问题:
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
Unable to set format: 1196444237 res: 640x480
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
修改:vi cd mjpg-streamer/plugins/input_uvc/input_uvc.c
int width = 640, height = 480, fps = -1, format = V4L2_PIX_FMT_MJPEG, i;
format = V4L2_PIX_FMT_YUYV
11,修改###vi plugins/input_uvc/v4l2uvc.c
//
//but I die this!///
struct v4l2_input inp;
inp.index = 0;
if (inp.type == V4L2_INPUT_TYPE_CAMERA)
printf("enuminput type is V4L2_INPUT_TYPE_CAMERA!\n");
if (-1 == ioctl (vd->fd, VIDIOC_S_INPUT, &inp))//
/
/
用火狐浏览器打开一个网页输入下面地址就能够看到一个视频(板zi的IP为192.168.1.4):
http://192.168.1.4:8222