ARM技术论坛
直播中

陈义

11年用户 357经验值
擅长:模拟技术 嵌入式技术 控制/MCU 蓝牙
私信 关注
[经验]

韦东山第三期视频监控mjpg_streamer实验的注意事项--最终能看到结果

本文摘录于本文博客:http://blog.csdn.net/chengdong1314/article/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




更多回帖

发帖
×
20
完善资料,
赚取积分