孙悟空 发表于 2014-6-14 23:42:45

树莓派定制为无线便携监控摄像头

Urna SemperInstructor’s NameJune 14, 2014

树莓派定制为无线便携监控摄像头ChinaFFmpeg 孙悟空简述:将树莓派定制为无线便携监控摄像头,插上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还是识别不出来,这样的话就要重新驱动了;# 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 WIFIBus 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下面的信息是这样的# ls /boot
boot.scr                                    config.txt                  config.txt.pal         grub                                          start.elf
bootcode.bin                              config.txt.hdmi_nooverscan    config.txt.pal_brazilkernel-3.12.17-2.20140415git1782035.rpfr20.imgstart.elf.desc
cmdline.txt                                 config.txt.hdmi_overscan      fixup.dat            kernel-3.12.20-1.20140521git7bd46e7.rpfr20.imgstart_cd.elf
config-3.12.17-2.20140415git1782035.rpfr20config.txt.ntsc_japan         fixup_cd.dat         kernel.img                                    start_x.elf
config-3.12.20-1.20140521git7bd46e7.rpfr20config.txt.ntsc_northamericafixup_x.dat            lost+found然后重启Raspberry Pi,就会发现,/dev下面出现了/video0这个设备驱动文件:# ls /dev/vide*
/dev/video0这个摄像头去动起来了,那么接下来怎么采集视频数据呢。通过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供电,这个可以加上一个充电宝,搞定;
效果如下


mingyuejingque 发表于 2014-6-20 12:03:09

严重顶一个:lol

DaybreakZhang 发表于 2014-6-20 17:35:36

顶顶,大师兄,
页: [1]
查看完整版本: 树莓派定制为无线便携监控摄像头