web调试树莓派摄像头

上个礼拜又开始玩raspberrry,但摄像头还没没玩热乎,在装 OpenCV想玩移动侦测的时候发现SD的卡套不够紧固,总是没法重启,一怒之下买了新的SD。

但刚满心欢喜的装上新SD卡时,发现摄像头没办法用了。之后开始怀疑系统、怀疑软件设置,然后在网上各种找,终于找到了官网的这个帖子,无奈的承认是摄像头坏了,或许就是前几天频繁启动插拔电源的时候弄坏了。

然后就只能乖乖的去淘宝买了新的摄像头。

但是新买的摄像头没办法自动对焦,所以为了在线调试摄像头,找了下教程,为此还装了motion,但之后才发现motion只支持USB摄像头,折腾了一段时间,大致成功后,有了此文,以作记录。

实现方案

主要的教程是用树莓派搭建网络摄像头,在此基础上,有删减,也有增加的说明。

  • 设备:树莓派B+、无线网卡、摄像头
  • 系统安装和硬件驱动:略去不表
  • 软件实现方案:
    用树莓派加上相机模块,可以实现实时监控的功能,再将时时视频流导入到 Web 界面中,就变成简单的网络摄像头(Webcam)。Web 端用 Nodejs + WebSocket,既可以进行实时播放,同时又方便进功能的扩展。

软件安装

安装 Nodejs/ffmpeg

install nodejs

教程中:

wget http://node-arm.herokuapp.com/node_latest_armhf.deb
sudo dpkg -i node_latest_armhf.deb

但是我这样安装后并未成功,找了下stack Overflow,发现是版本问题,解决办法如下:

wget https://nodejs.org/download/release/v0.10.0/node-v0.10.0-linux-arm-pi.tar.gz
cd /usr/local
sudo tar xzvf ~/node-v0.10.0-linux-arm-pi.tar.gz --strip=1

查看node版本,安装成功

pi@raspberrypi~ $ node -v
v0.10.0

install ffmpeg

libx264 support
git clone git://git.videolan.org/x264 
cd x264 
./configure --host=arm-unknown-linux-gnueabi --enable-static --disable-opencl
make 
sudo make install
ffmpeg
git clone git://git.ffmpeg.org/ffmpeg cd ffmpeg sudo 
./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree 
make  
sudo make install

install ws

原教程没提到安装ws,如果你的树莓派没有的话,需要安装下。

npm install ws

软件配置

创建 Node server 监听

进入webcam目录下 ,创建 Node server 监听 http://127.0.0.1:8082

git clone https://github.com/phoboslab/jsmpeg.git webcam 
cd webcam && node stream-server.js password

打开视频,并通过 ffmpeg 转换视频格式

raspivid -t 0 -w 320 -h 240 -o - | ffmpeg -i - -s 320x240 -f mpeg1video -b 800k -r 30 http://127.0.0.1:8082/password

本地监控

用浏览器打开stream-example.html,就可以在本地看到实时监控画面了。但我的树莓派没装火狐,所以测试看不到视频,但这不重要,本来就不打算在本地监控。

远程调试

远程调试需要修改文件stream-example.html

var client = new WebSocket( 'ws://RASPI_LOCAL_IP:8084/' ); 

在webcam目录下开启HTTP服务

python -m SimpleHTTPServer 8080

在远程的浏览器中打开,其中,RASPI_LOCAL_IP是树莓派的ip地址

http://RASPI_LOCAL_IP:8080 

后续

初步的功能已经调试成功,摄像头的焦距现象也正常了。
但在调试的过程中发现延迟较大,应该可以做后续的优化。
附图:

屏幕快照 2016-06-07 下午11.31.03.png

参考与感谢

推荐阅读更多精彩内容