用树莓派搭建网络摄像头

作者: 蛙声一爿 | 来源:发表于2015-05-26 22:53 被阅读5963次

    备份自:http://blog.rainy.im/2015/05/26/webcam-on-raspberry-pi/
    用树莓派加上相机模块,可以实现实时监控的功能,再将时时视频流导入到 Web 界面中,就变成简单的网络摄像头(Webcam)。Web 端用 Nodejs + WebSocket,既可以进行实时播放,同时又方便进功能的扩展。

    raspberry pi 2braspberry pi 2b

    Raspberry PI 2B 在硬件上比第一代有很大提升,多了两个 USB 接口,存储换成了 Micro SD。摄像模块 支持1&2代,通过 HDMI 旁边的 CSI CONNECTOR 接口接入。

    下面介绍 Webcam 的搭建过程。

    1. 安装 Raspbian 操作系统

    官方下载 系统镜像,Mac 系统下刻制系统镜像到 SD 卡中的步骤如下:

    # 1. 
    diskutil list
    
    # 查看 SD 卡所属文件
    #/dev/disk2
    #   #:                       TYPE NAME                    SIZE       IDENTIFIER
    #   0:     FDisk_partition_scheme                        *7.9 GB     disk2
    #   1:                 DOS_FAT_32 NO NAME                 7.9 GB     disk2s1
    
    # 2.
    diskutil unmountDisk /dev/disk2
    
    #Unmount of all volumes on disk2 was successful
    
    # 3.
    sudo dd bs=1m if=2015-05-05-raspbian-wheezy.img of=/dev/disk2
    
    # 3125+0 records in
    # 3125+0 records out
    # 3276800000 bytes transferred in 1562.948501 secs (2096550 bytes/sec)
    
    # 4.
    sudo diskutil eject /dev/disk2
    # 这一步可能会需要相当长的时间
    
    # Disk /dev/disk2 ejected
    

    刻制完成后可以将 SD 卡插入 PI 的卡槽中,通电即可开机(第一次还是需要用 HDMI 接显示器,操作更方便一些)。

    2. 系统配置

    第一次进入 raspbian 系统需要进行相关系统配置sudo raspi-config,包括选择使用全部 SD 卡作为系统存储、开启 Camera module 等选项:

    raspi_configraspi_config

    插入 USB WIFI 后,配置 WIFI 连接,参考 SETTING WIFI UP VIA THE COMMAND LINE。最后,更新一下源(推荐 mirrors.zju.edu.cn :D,或者阿里云):

    sudo nano /etc/apt/sourses.list
    
    # deb http://mirrors.zju.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
    # deb-src http://mirrors.zju.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
    
    sudo apt-get update
    

    3. Camera module 操作指令

    raspbian 中系统自带对摄像头的操作指令,分别是raspistill, raspivid & raspistillyuv(这里有官方详细文档),其中 raspivid 是获取视频流的指令。

    # 捕捉 5s 视频并输出到 video.h264,视频尺寸为 320x240
    raspivid -t 5000 -w 320 -h 240 -o video.h264
    
    # 实时监控并输出到 stdout
    raspivid -t 0 -w 320 -h 240 -o -
    

    获取实时监控之后的视频流输出之后,可以通过 ffmpeg 转化视频格式,输出到监听服务器。

    4. 安装 Nodejs/ffmpeg

    # 1. install nodejs
    wget http://node-arm.herokuapp.com/node_latest_armhf.deb
    sudo dpkg -i node_latest_armhf.deb
    node -v
    
    # 2. 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
    

    5. Webcam

    通过 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/yourpassword
    

    同时创建 Node server 监听 http://127.0.0.1:8082(参考:jsmpeg):

    git clone https://github.com/phoboslab/jsmpeg.git webcam
    cd webcam && node stream-server.js yourpassword
    
    # Listening for MPEG Stream on http://127.0.0.1:8082/<secret>/<width>/<height>
    # Awaiting WebSocket connections on ws://127.0.0.1:8084/
    

    然后打开stream-example.html就可以看到实时监控画面了,如果是远程调试需要稍作更改:

    # edit stream-example.html
    var client = new WebSocket( 'ws://RASPI_LOCAL_IP:8084/' );
            var player = new jsmpeg(client, {canvas:canvas});
    
    # @/path/to/webcam
    python -m SimpleHTTPServer 8080
    
    # in your browser
    http://RASPI_LOCAL_IP:8080
    

    参考

    1. Setup Node.js on Raspberry Pi 2 B
    2. Installing FFMPEG for Raspberry Pi
    3. HTML5 LIVE VIDEO STREAMING VIA WEBSOCKETS

    相关文章

      网友评论

        本文标题:用树莓派搭建网络摄像头

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