用树莓派搭建网络摄像头

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

raspberry pi 2b
raspberry 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_config
raspi_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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,423评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,339评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,241评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,503评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,824评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,262评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,615评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,337评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,989评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,300评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,829评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,193评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,753评论 3 230
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,970评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,708评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,295评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,207评论 2 258

推荐阅读更多精彩内容