« 2009/10, Vol. 165 PChome Magazine | 首頁 | 2009/11, Vol. 166 PChome Magazine »

2009年10月27日

gphoto2 + crond + ffmpeg 記錄流逝時間

環境:

準備

1. 安裝 gphoto2

sudo yum install gphoto2

2. 查看 gphoto2 支援的數位相機、WebCam

gphoto2 --list-cameras | less

3. 準備好數位相機, 視需要調整相機 USB 模式

4. 接上 USB 傳輸線, 若系統自動掛載相機記憶卡, 須先 umount

5. 查看 gphoto2 對該相機的支援內容

gphoto2 -a

6. 進行拍攝前的必要設置

查看可設置的內容
sudo gphoto2 --list-config

查看 flash (閃光燈) 參數
sudo gphoto2 --get-config flash

關閉閃光燈 (Nikon E4300 的 2 是 Off)
sudo gphoto2 --set-config flash=2

查看照片解析度參數
sudo gphoto2 --get-config resolution

設定照片解析度 (Nikon E4300 的 4 是 Normal-XGA -- 1024x768)
sudo gphoto2 --set-config resolution=4

試拍

因 USB 裝置的權限關係, 以下均以 root 身份進行
sudo su -

拍照
gphoto2 --capture-image

取得相機記憶卡內的所有照片
gphoto2 --get-all-files

刪除相機記憶卡內的所有照片
gphoto2 --delete-all-files

回到登入 X window 的帳號瀏覽照片
chown myaccount:mygroup *.JPG
mv *.JPG ~myaccount/Pictures
exit
gthumb ~/Pictures

定時拍照

製作拍照 Shell Script

sudo su -

vi /root/take-picture.sh

#!/bin/sh

gphoto2 --capture-image > /dev/null 2>&1
gphoto2 --get-all-files > /dev/null 2>&1
gphoto2 --delete-all-files > /dev/null 2>&1
chown myaccount:mygroup *.JPG
mv *.JPG ~myaccount/Pictures/

chmod +x /root/take-picture.sh

每分鐘拍一張

crontab -e

* * * * * /root/take-picture.sh

每三十秒拍一張

while true; do /root/take-picture.sh; sleep 30; done

使用 ffmpeg 將所有照片串成 mp4 影片

安裝 ffmpeg

sudo rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm

sudo rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

sudo yum install ffmpeg

將照片檔名轉成數字流水號

gthumb ~/Pictures

Ctrl + A 選取全部照片

Edit → Rename (或直接按 F2)

  • Template: ###.jpg (視檔案數量給予幾位數編號 #)
  • Start at: 1

按 Rename 鈕, 將所有照片更名為數字編號的 001.jpg、002.jpg...

製作影片

ffmpeg -i %03d.jpg -s 640x480 -b 10240k myvideo.mp4

ps.若檔案編號為四位數, 應改成 %04d.jpg, 餘類推

觀看影片

  • ffplay ./myvideo.mp4
  • mplayer -speed 0.1 ./myvideo.mp4 (以 1/10 的速度觀看影片)


參考資料

Posted by Jamyy at 2009年10月27日 14:00