web调试树莓派摄像头

作者: LienZzzz | 来源:发表于2016-06-07 23:24 被阅读2065次

    上个礼拜又开始玩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

    参考与感谢

    相关文章

      网友评论

      • 6114af858d01:我想请教一下,为什么我在远程调试并不能看到我的视频,我用的是chrome,一定要火狐吗?而且我git下来的文件好像跟你不太一样,能指教一下吗?
        LienZzzz:@D10S gihub里的版本更新了,你可以去看下github里的更新文档。之前的stream-server.js现在应该换成了websocket-relay.js,更新文档里有使用说明,旧版本见https://github.com/phoboslab/jsmpeg/releases/tag/v0.2。
        6114af858d01:@LienZzzz 我之前也是参考这个的,但是还是没成功,而且我git下来那个文件,好像是没有stream-server.js这个文件的,所以我不知道是不是它换了别的方式,所以就不能成功了。。。
        LienZzzz:我在远程用的也是Chrome浏览器,主要参考http://blog.rainy.im/2015/05/26/webcam-on-raspberry-pi/,我也是按照这个教程做的。远程调试出不来的话,检查下本地有没有,本地有远程没有可能和配置和防火墙有关。

      本文标题:web调试树莓派摄像头

      本文链接:https://www.haomeiwen.com/subject/dfxjdttx.html