用樹(shù)莓派搭建網(wǎng)絡(luò)攝像頭

備份自:http://blog.rainy.im/2015/05/26/webcam-on-raspberry-pi/
用樹(shù)莓派加上相機(jī)模塊,可以實(shí)現(xiàn)實(shí)時(shí)監(jiān)控的功能肋演,再將時(shí)時(shí)視頻流導(dǎo)入到 Web 界面中仔引,就變成簡(jiǎn)單的網(wǎng)絡(luò)攝像頭(Webcam)咱筛。Web 端用 Nodejs + WebSocket胚嘲,既可以進(jìn)行實(shí)時(shí)播放,同時(shí)又方便進(jìn)功能的擴(kuò)展强胰。

raspberry pi 2b
raspberry pi 2b

Raspberry PI 2B 在硬件上比第一代有很大提升舱沧,多了兩個(gè) USB 接口,存儲(chǔ)換成了 Micro SD偶洋。攝像模塊 支持1&2代熟吏,通過(guò) HDMI 旁邊的 CSI CONNECTOR 接口接入。

下面介紹 Webcam 的搭建過(guò)程玄窝。

1. 安裝 Raspbian 操作系統(tǒng)

官方下載 系統(tǒng)鏡像牵寺,Mac 系統(tǒng)下刻制系統(tǒng)鏡像到 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
# 這一步可能會(huì)需要相當(dāng)長(zhǎng)的時(shí)間

# Disk /dev/disk2 ejected

刻制完成后可以將 SD 卡插入 PI 的卡槽中,通電即可開(kāi)機(jī)(第一次還是需要用 HDMI 接顯示器恩脂,操作更方便一些)帽氓。

2. 系統(tǒng)配置

第一次進(jìn)入 raspbian 系統(tǒng)需要進(jìn)行相關(guān)系統(tǒng)配置sudo raspi-config,包括選擇使用全部 SD 卡作為系統(tǒng)存儲(chǔ)俩块、開(kāi)啟 Camera module 等選項(xiàng):

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 中系統(tǒng)自帶對(duì)攝像頭的操作指令漫仆,分別是raspistill, raspivid & raspistillyuv(這里有官方詳細(xì)文檔)捎拯,其中 raspivid 是獲取視頻流的指令。

# 捕捉 5s 視頻并輸出到 video.h264歹啼,視頻尺寸為 320x240
raspivid -t 5000 -w 320 -h 240 -o video.h264

# 實(shí)時(shí)監(jiān)控并輸出到 stdout
raspivid -t 0 -w 320 -h 240 -o -

獲取實(shí)時(shí)監(jiān)控之后的視頻流輸出之后玄渗,可以通過(guò) ffmpeg 轉(zhuǎn)化視頻格式座菠,輸出到監(jiān)聽(tīng)服務(wù)器狸眼。

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 # 這一步可能相當(dāng)相當(dāng)漫長(zhǎng),在我這里跑了有一個(gè)多小時(shí)
sudo make install

5. Webcam

通過(guò) ffmpeg 轉(zhuǎn)換視頻格式:

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

同時(shí)創(chuàng)建 Node server 監(jiān)聽(tīng) 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/

然后打開(kāi)stream-example.html就可以看到實(shí)時(shí)監(jiān)控畫(huà)面了浴滴,如果是遠(yuǎn)程調(diào)試需要稍作更改:

# 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拓萌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子升略,更是在濱河造成了極大的恐慌微王,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件品嚣,死亡現(xiàn)場(chǎng)離奇詭異炕倘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)翰撑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)罩旋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事涨醋」霞ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵浴骂,是天一觀的道長(zhǎng)乓土。 經(jīng)常有香客問(wèn)我,道長(zhǎng)溯警,這世上最難降的妖魔是什么趣苏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮梯轻,結(jié)果婚禮上拦键,老公的妹妹穿的比我還像新娘。我一直安慰自己檩淋,他們只是感情好芬为,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蟀悦,像睡著了一般媚朦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上日戈,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天询张,我揣著相機(jī)與錄音,去河邊找鬼浙炼。 笑死份氧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弯屈。 我是一名探鬼主播蜗帜,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼资厉!你這毒婦竟也來(lái)了厅缺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宴偿,失蹤者是張志新(化名)和其女友劉穎湘捎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體窄刘,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窥妇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娩践。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片活翩。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逞带,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纱新,到底是詐尸還是另有隱情展氓,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布脸爱,位于F島的核電站遇汞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏簿废。R本人自食惡果不足惜空入,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望族檬。 院中可真熱鬧歪赢,春花似錦、人聲如沸单料。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扫尖。三九已至白对,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間换怖,已是汗流浹背甩恼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沉颂,地道東北人条摸。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铸屉,于是被迫代替她去往敵國(guó)和親钉蒲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容