Urna Sempercss
Instructor’s Namehtml
June 14, 2014linux
簡述:
將樹莓派定製爲無線便攜監控攝像頭,插上USB攝像頭,插上USB wifi,而後將攝像頭的數據編碼,將編碼後的數據推流至流媒體服務器,其餘人就能夠經過流媒體服務器能夠觀看到樹莓派攝像頭採集到的數據。nginx
內容:git
將樹莓派供電,插上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仍是識別不出來,這樣的話就要從新驅動了;ide
- [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