Urna Semper
Instructor’s Name
June 14, 2014
将树莓派定制为无线便携监控摄像头,插上USB摄像头,插上USB wifi,然后将摄像头的数据编码,将编码后的数据推流至流媒体服务器,其他人就可以通过流媒体服务器可以观看到树莓派摄像头采集到的数据。
内容:
将树莓派供电,插上HDMI,接上显示器,就是一个miniPC,其实这个是很正常的,但是Raspberry Pi这个东西毕竟是个简单的miniPC系统,支持的设备还是挺少的,加上USB摄像头比较老了,是好几年前买的,所以不大好用,lsusb可以看到usb可以识别到,但是没有对应的驱动
ls /dev/没有看到video0,lsmod也没有看到v4l之类的信息;而USB wifi,可以识别,树莓派是去年买的,可能kernel相对来有点老了,所以没有支持上,就下载了pidora,装了一个新的。因为Raspberry Pi是SD Card加载系统的,所以,安装系统还是比较方便的,将image通过dd到SDCard里面就可以了。装上以后,USB WIFI就可以被识别出来了,但是USB Camera还是识别不出来,这样的话就要重新驱动了;
点击(此处)折叠或打开
- [root@pidora ~]# lsusb
- Bus 001 Device 008: ID 046d:c31c Logitech, Inc. Keyboard K120 for Business
- Bus 001 Device 010: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse
- Bus 001 Device 006: ID 0c45:62c0 Microdia Sonix USB 2.0 Camera
- Bus 001 Device 005: ID 1a40:0101 Terminus Technology Inc. Hub
- Bus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
- Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
- Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. SMC9512/9514 USB Hub
- Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
通过这个信息可以看到两个相关的USB信息,一个是USB摄像头
点击(此处)折叠或打开
- Bus 001 Device 006: ID 0c45:62c0 Microdia Sonix USB 2.0 Camera
另外一个是USB WIFI
点击(此处)折叠或打开
- Bus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
可以看到USB摄像头是Microdia Sonix USB 2.0 Camera
这个设备的驱动在Linux-2.6的时候就已经有了,但是Pidora默认是不支持的,所以需要自己重新去编译LinuxKernel,定制一下,支持 RTL8192CU 和Sonix Camera就可以了,然后做成rpm,通过rpm安装:
点击(此处)折叠或打开
- rpm -Uvh kernelxxxxxxxxx.rpm
安装好以后,就可以看到boot下面的信息是这样的
点击(此处)折叠或打开
- [root@pidora ~]# ls /boot
- boot.scr config.txt config.txt.pal grub start.elf
- bootcode.bin config.txt.hdmi_nooverscan config.txt.pal_brazil kernel-3.12.17-2.20140415git1782035.rpfr20.img start.elf.desc
- cmdline.txt config.txt.hdmi_overscan fixup.dat kernel-3.12.20-1.20140521git7bd46e7.rpfr20.img start_cd.elf
- config-3.12.17-2.20140415git1782035.rpfr20 config.txt.ntsc_japan fixup_cd.dat kernel.img start_x.elf
- config-3.12.20-1.20140521git7bd46e7.rpfr20 config.txt.ntsc_northamerica fixup_x.dat lost+found
然后重启Raspberry Pi,就会发现,/dev下面出现了/video0这个设备驱动文件:
点击(此处)折叠或打开
- [root@pidora ~]# ls /dev/vide*
- /dev/video0
这个摄像头去动起来了,那么接下来怎么采集视频数据呢。
本文来自bbs.chinaffmpeg.com 孙悟空所写
通过ffmpeg即可,在Raspberry Pi下面安装ffmpeg,其实Raspberry Pi方便的地方就是他是个miniPC,非常方便,将PC下编译ffmpeg的时候需要的源码包传到Raspberry Pi上即可,其他步骤和PC一样;
因为camera在Linux下面一般是V4L,也就是video4linux或者video4linux2,而ffmeg可以支持这个,那么就可以看到如上图所示;发现usb camera可以知道一些参数,视频是Rawdata,yuy2的数据,分辨率是640x480;
然后可以通过ffmpeg去进行编码,和操作本地文件一样;
点击(此处)折叠或打开
- ffmpeg -r 30 -f video4linux2 -i /dev/video0 -vcodec libx264 -r:v 25 -b:v 2000k -pix_fmt yuv420p -preset ultrafast -s 640x480 -f flv rtmp://192.168.1.194/chinaffmpeg/sunwukong
编码速度刚刚好,可以推流。
rtmp服务器可以使用nginx-rtmp,由于树莓派是USB供电,那么可以使用充电宝,就可以带走了
下面看一下效果图
http://blog.chinaunix.net/uid-11344913-id-4304172.html