Ameba Arduino: [RTL8195] SDIO – 縮時攝影:使用UVC拍照並存至SD Card裡

材料準備

  • Ameba x 1
  • SD card or MicroSD card x 1
  • SD sniffer x 1 (optional)
  • Logitech C170 web cam x 1
  • Micro USB OTG adapter x 1

範例說明

這個範例裡結合UVC拍照的功能,定時將照片存至SD Card裡,成為縮時攝影的功能。
我們打開範例 “File” -> “Examples” -> “AmebaSdFatFs” -> “time_lapse_photography”
範例裡一開始會先嘗試啟動UVC,接著初始化SD Fat FS,在loop()裡每隔3秒抓一張圖片存至SD Card裡,並編號成0001.jpeg, 0002.jpeg, 0003.jpeg, ……
1要將這些檔案轉成電影,有一些工具可以用,這邊介紹ffmpeg,它的官網: https://ffmpeg.org/
在下載區裡有不同OS的版本,下載完之後,如果你是用windows的版本,在縮時攝影的資料夾底下,輸入:
ffmpeg -framerate 30 -i %04d.jpeg -vf fps=30 -pix_fmt yuv420p output.mp4
底下對後面帶的參數簡略說明:
-framrate: 如果使用這個參數,表示忽略input的時間戳記,並且以framrate處理的結果當做時間軸,這裡代表每輸入30張為1秒
-i: 後面帶的是input的檔名,我們使用%04d.jpeg,代表它會從0000.jpeg, 0001.jpeg, 0002.jpeg, …開始找
fps: 代表輸出的影像的framerate,這裡我們使用1秒30張
最後面的檔名是輸出的檔名

底下是我們在傍晚記錄約2小時的縮時攝影:

程式碼說明

程式碼分成兩個功能,第一個是UVC的部份,第二個是SD的部份
UVC的部份可以參考使用UVC抓JPEG的範例
當抓完圖片之後,將檔案寫入至SD卡,這部份可以參考在SD Card編輯檔案的範例