本文摘录于本文博客:http://blog.csdn.net/chengdong1314/ar
ticle/details/50402408
这是原来视频给出的步骤:
讲解mjpg-streamer
1. 如何将mjpg-streamer移植到
开发板上
文件系统:fs_mini_mdev_new_auto_wifi_ap.tar.bz2
(1) libjpeg 的移植
tar xzvf libjpeg-turbo-1.2.1.tar.gz
cd libjpeg-turbo-1.2.1
mkdir tmp
./configure --prefix=/work/jz2440/libjpeg-turbo-1.2.1/tmp --host=arm-linux
make
make install
cp /work/jz2440/libjpeg-turbo-1.2.1/tmp/lib/*so* /work/nfs_root/fs_mini_mdev_new/lib/ -d
(2) mjpg-streamer 的移植:
tar xvf mjpg-streamer-r63.tar.gz
cd mjpg-streamer-r63
修改所有的Makefile
--(1) 将 CC=gcc 修改为 CC=arm-linux-gcc
--(2) 修改plugins/input_uvc/Makfile
a. 将
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
改为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /work/jz2440/libjpeg-turbo-1.2.1/tmp/include
注意:
-I /work/jz2440/libjpeg-turbo-1.2.1/tmp/include // 是编译libjpeg 生成的文件
b. 将
input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo
jpeg_utils.lo dynctrl.lo
改为
input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
$(CC) $(CFLAGS) -ljpeg -L /work/jz2440/libjpeg-turbo-1.2.1/tmp/lib -o
$@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
make
cp mjpg_streamer /work/nfs_root/fs_mini_mdev_new/bin/
cp *so* /work/nfs_root/fs_mini_mdev_new/lib/ -d
2.分析源码
input_init();
output_init();
input_run();
output_run();
3.自己写客服端
(1).发送一个请求字符串
"GET /?action=snapshotn"
"GET /?action=streamn"
"GET /?action=commandn"
(2).再发送一次字符串
如果我们不使用密码功能!则只需发送任意长度为小于2字节的字符串,比如:
"fn"
如果发送的请求是:"GET /?action=snapshotn"
(3).需要接收一次字符串(是服务器发过来的报文)
(4).接收一帧图片
如果发送的请求是:"GET /?action=streamn"
(3).需要接收一次字符串(是服务器发过来的报文)
while(1)
{
(4).再接收一次报文,解析它,得到一帧图片的大小(size)
(5).接收size个字节的数据
}
启动内核:
set ipaddr 192.168.7.122 && set serverip 192.168.7.111 && tftp 0x30000000 uImage
set bootargs root=/dev/nfs nfsroot=192.168.7.202:/work/nfs_root/fs_mini_mdev_new ip=192.168.7.17 console=ttySAC0,115200 && bootm 0x30000000
二合一摄像头
mjpg_streamer -i "input_uvc.so -f 10 -r 320*240" -o "output_http.so -w www"
一般摄像头
mjpg_streamer -i "input_uvc.so -f 10 -r 320*240 -y" -o "output_http.so -w www"
剩下的就是我实验的步骤了:
nfs 30000000 192.168.1.113:/work/nfs_root/uImage_wifi ; bootm 30000000 //这是以前留下的内核
ifconfig wlan0 192.168.10.1
dhcpd -cf /etc/dhcpd.conf wlan0
hostapd -B /etc/myhostapd.conf
hostapd_cli all_sta
cat /var/db/dhcpd.leases
注意:这里不能够使用和PC路由器相同的IP段,比如路由器为192.168.1.0那么这里就不能够设置IP为192.168.1.XX 否则不能够运行
killall dhcpd && killall hostapd && killall mjpg_streamer
mjpg_streamer -i "input_uvc.so -f 10 -r 320*240" -o "output_http.so -w www" & //这里启动mjpg_streamer应用程序,之后就可以用
手机连接了,手机客户端的IP为:192.168.10.1
可以用以前的程序来测试摄像头驱动行不行:
./video2lcd /dev/video0
有图有真相,这是本实验图片:
现在把所用的资料传上来:
mjpg_streamer实验的内核和应用程序.zip:
这里是mjpg_streamer这个程序和内核,应用程序已经编译通过,这里直接使用里面的应用程序:
http://download.csdn.net/detail/chengdong1314/9376751
开发板根目录下的配置.7z:
这里是做本实验时的根目录相关配置,因为根目录十分复杂,所以这里不上传了
http://download.csdn.net/detail/chengdong1314/9376753