分類: 樹莓派物聯網

樹莓派 Raspberry Pi 與 USB 網路攝影機,自製縮時攝影設備教學

設備安裝

這個自製的旅行縮時攝影設備只需要一張樹莓派開發板與一個 USB 網路攝影機。

樹莓派與 USB 網路攝影機

因為這一組設備我想要直接放在車上,所以就選一張舊的樹莓派來用,這一張是第一代的 Raspberry Pi Model B+ V1.2,CPU 只有 700 MHz,這個速度當作 PC 用的話通常不太夠,但放在車上用剛好,既省電又不會太熱。

樹莓派 Raspberry Pi Model B+ V1.2

電源的部分就使用一般車用的 USB 充電器就可以了,建議挑選有 2A 以上給平板用的那種。

車用 USB 充電器

將設定好的樹莓派接上 USB 網路攝影機與電源,正常的話不用一分鐘就會自動啟動攝影機,開始拍攝縮時攝影了。

樹莓派

網路攝影機就看自己喜歡放在哪個角度,通常掛在車內後照鏡上。

USB 網路攝影機(webcam)

在車上安裝攝影機的鏡頭時,最常見的問題就是沒有螢幕,看不到鏡頭拍攝的角度,這時候我們就可以拿出手機,連線至樹莓派的 WiFi 熱點,接著用瀏覽器打開樹莓派的 8081 連接埠,就可以看到串流影像了,以我的例子來說,樹莓派的 IP 位址我設定為 192.168.50.1,就用瀏覽器開啟這個網址:

http://192.168.50.1:8081/

串流的畫面看起來就像這樣:

影像串流畫面

這樣我們就可以看著手機上鏡頭的畫面,輕鬆調整鏡頭的角度了。

樹莓派與影像串流畫面

這個串流畫面會有幾秒鐘的延遲,這可能跟樹莓派的處理速度有關係,不過實際操作上影響不大,只是在調整攝影機角度時,要稍微等個兩、三秒,再看看畫面是否合適。

影像串流畫面

調整好網路攝影機的角度之後,就可以開始使用這個自己打造的縮時攝影機了,也就是說接下來樹莓派就會以每秒一張的速度,將畫面拍攝下來,儲存在儲存媒體中。

樹莓派的 8080 連接埠還有 motion 提供的網頁操作介面,如果需要對 motion 進行各種控制,就可以透過這個方式。

motion 網頁控制介面

就我個人的使用狀況而言,在使用的過程中車內有開冷氣的狀態下,樹莓派的溫度都在攝氏四十幾度左右,下面這張圖是我用手機的 RasPi Check App 查看樹莓派的狀態資訊快照。

樹莓派狀態資訊

舊版樹莓派的好處就是省電、溫度非常低,但是缺點就是 CPU 運算速度不夠快,如果想要製作更高畫質或拍攝頻率更高的影片,可以考慮使用新的樹莓派板子。

如果您是使用比較新版的樹莓派,散熱的問題可能就要注意,例如夏天不要放在陽光下直曬,或是放在冷氣口散熱。

樹莓派

原則上來說,USB 網路攝影機並沒有特別一定要使用哪一款,只要是樹莓派支援的 USB 網路攝影機都可以使用,除了本文中的這個網路攝影機,我也用過羅技的 C170 這一個網路攝影機,使用方式都完全一樣。Embedded Linux Wiki 有一張 RPi USB Webcams 表格可以參考。

在車子到達目的地時,先把車子停好之後,在車子熄火之前,使用 RasPi Check 這類的手機 App 控制樹莓派正常關機,確保所有的照片都正常寫入儲存媒體,接著再將汽車熄火。

RasPi Check 手機 App

當然如果不想那麼麻煩,也可以在停好車等個幾秒鐘(或是幾十秒)之後,直接將汽車熄火,通常照片也是可以正常寫入的,只是沒那麼保險。

製作影片

縮時攝影的照片拍攝完成後,可以將樹莓派的記憶卡取下來,放在 Linux 的個人電腦中掛載起來讀取照片。

所有拍攝的照片預設會儲存在 /var/lib/motion 目錄中,檔案名稱會類似 01-20161121023805-snapshot.jpg 這樣以日期來編碼的檔名。在製作影片之前,可以先自己篩選一下照片,把一些 NG 的照片刪掉。

接著把所有要用來製作影片的照片放在同一個目錄中,如果您想要把照片分組,製作多個影片,就把照片分別放在多個不同的目錄中,這樣比較方便處理。

在含有照片的目錄中,執行以下這段指令稿,將所有的照片依照順序重新以數字命名:

/bin/ls *.jpg | perl -ne 'chomp;printf "mv $_ %04d.jpgn",$i++' | sh

這樣的作用是方便把所有的照片一次交給 ffmpeg 處理,接著呼叫 ffmpeg 製作影片:

ffmpeg -r 20 -i %04d.jpg output.mp4

如果在比較新的 Linux 發行版中,ffmpeg 可能會被 avconv 取代,不過指令大同小異:

avconv -r 20 -i %04d.jpg output.mp4

這樣產生出來的 output.mp4 就是縮時攝影的結果了。下面這段影片是我在下雨天拍攝的旅行縮時攝影。

紀錄日期與時間

樹莓派的硬體中並沒有實時時鐘(RTC)的配備,也就是說樹莓派在斷電的狀態下是沒有辦法紀錄正確的時間的,如果有網路的話,我們可以在開機時透過 ntp 網路校時的方式取得正確的時間,但若是沒有網路的話(例如裝在汽車上),樹莓派是無法得知正確的時間的,所以在前面的示範教學中,在設定 motion 時,直接將照片中的時間戳記改為一般的文字,因為沒有正確的時間資訊,寫上去的時間也是錯的。

若想要在沒有網路的環境下,又可以保有正確的時間,可以在樹莓派上加裝一個 DS3231 RTC,這樣樹莓派在開機時就可以從這個 RTC 取得正確的時間,之後在拍攝縮時攝影照片時,就可以將正確的時間打在照片上。

加裝了 DS3231 RTC,有了正確的時間之後,接著再修改 /etc/motion/motion.conf 設定檔,將右下方的文字改為時間戳記:

#text_right %Y-%m-%dn%T-%q
#text_right "G.T.Wang"
text_right %Y-%m-%dn%T

這裡我用的時間戳記是年-月-日加上時間,這個格式可以自行調整,如果您設定一秒拍攝一張以上的畫面,可以再加上 %q 這個 frame 的編號。

加上時間戳記之後,拍攝出來的照片就會記錄下拍攝的時間,讓旅程的紀錄更完整。

時間戳記

以下就是加上時間戳記的縮時攝影。

上面這段影片中,中間大約在 1:03 左右的地方我開進加油站加油,這一次我沒有讓樹莓派正常關機就直接熄火,導致熄火前十幾秒的畫面圖檔都沒有寫入儲存媒體(那些檔案的大小都是零),所以中間這一段就漏掉了。所以如果是要錄製重要的畫面,記得要讓樹莓派正常關機。

參考資料:Programmatic PonderingsEmbedded Linux Wiki

Page: 1 2

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang

Recent Posts

[DIY] 自製凡士林火種

這裡介紹如何利用簡單的凡士林與...

3 年 ago

[DIY] 自製火影木葉、砂忍者村標誌雕刻木牌

本篇記錄我用路邊撿來的樟木與龍...

3 年 ago

收集龍眼木修剪枝幹用於木頭工藝

最近打算帶著阿玄做一些木工作品...

3 年 ago

[DIY] 樟木手工自製迷你手裏劍(忍者武器)

本篇記錄阿玄第一次使用木工工具...

3 年 ago

[DIY] 龍眼木手工自製木槌

本篇記錄我用自己砍的龍眼木還有...

3 年 ago

[DIY] 樟木手工自製苦無(忍者武器)

本篇記錄我自己用樟木的枝幹,以...

3 年 ago