設備安裝
這個自製的旅行縮時攝影設備只需要一張樹莓派開發板與一個 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
繼續閱讀: 12
elephant
請問若是要放在家中當監視器可以從手機即時觀看
是不是可以設定樹莓派連上家中wifi
就不用設定一個虛擬IP
手機在進入那組IP就可以觀看?
G. T. Wang
若在家中讓手機與樹莓派都連上同一個無線 AP,
就不需要自己建立 AP,
直接使用家裡無線 AP 的 DHCP 配發的 IP 位址即可使用。
建議您先研究基本的網路知識再來實作。
Jimmy
你好,請問如果是放在家中當監示器,但在公司要用手機觀看,有哪些方式可以達到呢??是不是一定要架個server??MQTT可以嗎?
G. T. Wang
是一定要有 server,架設方式有很多種,但是一言難盡。
MQTT 只是簡單的訊息傳輸協定,在這裡用不到。
Jimmy
1. 謝謝回覆,我查到這個網頁可以設定從外部網路連回來,好像不用架server,還是我對server的理解錯誤?以為架server就是要另一台PC去架設,或是用網路免費的server。
https://pimylifeup.com/raspberry-pi-security-camera/
2. 若我想從公司經由樹莓派控制家裡的電器,可以用MQTT的軟體嗎?還是MQTT的軟體只適合區域網路嗎?
G. T. Wang
1. 這裡的 server 可以使用各種設備架設,不一定要是 PC,通常網路上最常見的實作是使用樹莓派本身作為 server,您提供的連結就是一例。
2. 從公司經由樹莓派控制家裡的電器,用 MQTT 很適合,它跟網路環境沒有直接關係,只不過要把路由相關的問題處理好,讓外部的連線可以進的來。(不過如果只是非常簡單的開關控制,用 MQTT 是殺雞用牛刀)
Jimmy
1. 我看你另一篇”樹莓派架設 RTMP 串流(Streaming)伺服器,傳送即時攝影機影像”,可以知道Nginx是server。但我反覆再看我貼的那個網頁,仍不清楚哪個地方是在安裝server,還是motion就有server的功能??
2. https://pimylifeup.com/raspberry-pi-webcam-server/
這篇是同網站的另一篇教學,他是設定路由器就可以由外部網路連線,你這篇是不是也可以經由設定路由器讓外部網路連線??
3. 如果只是非常簡單的開關控制,用 MQTT 是殺雞用牛刀,有建議的殺雞刀嗎??
不好意思…不太懂…所以問題有點多
G. T. Wang
1. motion 本身就有 server 的功能。
2. 是。
3. 沒有建議的,通常選自己喜歡的。
我想您應該先從基本的觀念學起,這樣問應該是很難弄懂的。
Jimmy
再請問一下,如果要從公司連到家裡的樹莓派,家裡的網路是不是要有固定IP?如果家裡的網路是用4G訊號來分享的是不是就沒有固定IP?
G. T. Wang
固定 IP 是最方便,浮動 IP 可配合 DDNS,若是虛擬 IP 可能就只能用 ssh tunnel 之類的方式了。
4G 通常是沒有實體 IP 的吧?
Petere
這邊樹莓派要做熱點使用應該還需要一張網卡吧?
Petere
沒事我沒看到第一頁
xin
如果我想將樹梅派利用自己寫的python程式opencv顯示攝影機畫面時,可以透過手機或是電腦觀看影像,請問要如何辦到
Dylan
您好請問一下,使用樹梅派時 Logitech C920R 會自動對焦嗎?
因為最近在使用樹梅派與 Logitech 可自動對焦的WebCam,卻發現無法自動對焦有點困擾。