這個自製的旅行縮時攝影設備只需要一張樹莓派開發板與一個 USB 網路攝影機。
因為這一組設備我想要直接放在車上,所以就選一張舊的樹莓派來用,這一張是第一代的 Raspberry Pi Model B+ V1.2,CPU 只有 700 MHz,這個速度當作 PC 用的話通常不太夠,但放在車上用剛好,既省電又不會太熱。
電源的部分就使用一般車用的 USB 充電器就可以了,建議挑選有 2A 以上給平板用的那種。
將設定好的樹莓派接上 USB 網路攝影機與電源,正常的話不用一分鐘就會自動啟動攝影機,開始拍攝縮時攝影了。
網路攝影機就看自己喜歡放在哪個角度,通常掛在車內後照鏡上。
在車上安裝攝影機的鏡頭時,最常見的問題就是沒有螢幕,看不到鏡頭拍攝的角度,這時候我們就可以拿出手機,連線至樹莓派的 WiFi 熱點,接著用瀏覽器打開樹莓派的 8081
連接埠,就可以看到串流影像了,以我的例子來說,樹莓派的 IP 位址我設定為 192.168.50.1
,就用瀏覽器開啟這個網址:
http://192.168.50.1:8081/
串流的畫面看起來就像這樣:
這樣我們就可以看著手機上鏡頭的畫面,輕鬆調整鏡頭的角度了。
這個串流畫面會有幾秒鐘的延遲,這可能跟樹莓派的處理速度有關係,不過實際操作上影響不大,只是在調整攝影機角度時,要稍微等個兩、三秒,再看看畫面是否合適。
調整好網路攝影機的角度之後,就可以開始使用這個自己打造的縮時攝影機了,也就是說接下來樹莓派就會以每秒一張的速度,將畫面拍攝下來,儲存在儲存媒體中。
樹莓派的 8080
連接埠還有 motion
提供的網頁操作介面,如果需要對 motion
進行各種控制,就可以透過這個方式。
就我個人的使用狀況而言,在使用的過程中車內有開冷氣的狀態下,樹莓派的溫度都在攝氏四十幾度左右,下面這張圖是我用手機的 RasPi Check App 查看樹莓派的狀態資訊快照。
舊版樹莓派的好處就是省電、溫度非常低,但是缺點就是 CPU 運算速度不夠快,如果想要製作更高畫質或拍攝頻率更高的影片,可以考慮使用新的樹莓派板子。
如果您是使用比較新版的樹莓派,散熱的問題可能就要注意,例如夏天不要放在陽光下直曬,或是放在冷氣口散熱。
原則上來說,USB 網路攝影機並沒有特別一定要使用哪一款,只要是樹莓派支援的 USB 網路攝影機都可以使用,除了本文中的這個網路攝影機,我也用過羅技的 C170 這一個網路攝影機,使用方式都完全一樣。Embedded Linux Wiki 有一張 RPi USB Webcams 表格可以參考。
在車子到達目的地時,先把車子停好之後,在車子熄火之前,使用 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 Ponderings、Embedded Linux Wiki
Page: 1 2