ぼろぼろ平原

困った

cronで30秒毎にスクリーンショットを撮って、それを動画にするスクリプト

f:id:tatzyr:20161009115740g:plain

cronで30秒毎にスクリーンショットを撮って、それを動画にするスクリプトを作った。今のところはmacOS専用。

https://github.com/Tatzyr/screencapture

github.com

セットアップ

まずは、GitHubからスクリプトをcloneする。

$ cd
$ git clone https://github.com/Tatzyr/screencapture

次に、cloneしたスクリプトをcrontabに登録する。これで30秒に1回capture.shが実行されるようになる。

$ crontab -e
* * * * * $HOME/screencapture/capture.sh & sleep 30; $HOME/screencapture/capture.sh

動作の確認

crontabにスクリプトを登録して1分程度待つと、さっきcloneしたフォルダ(~/screencapture/)以下にフォルダと画像ファイルができるはず。

### 日付のフォルダができる
$ ls -altrF ~/screencapture/
20160909/   20160916/   20160923/   20160930/   20161007/
20160910/   20160917/   20160924/   20161001/   LICENSE
20160911/   20160918/   20160925/   20161002/   README.md
20160912/   20160919/   20160926/   20161003/   capture.sh*
20160913/   20160920/   20160927/   20161004/   encode.sh*
20160914/   20160921/   20160928/   20161005/
20160915/   20160922/   20160929/   20161006/

### 日付のフォルダの中にはスクリーンショット画像ファイルができる
$ ls -F  ~/screencapture/20161007/
1475818860.png  1475818980.png  1475819100.png  1475819220.png  1475819340.png
1475818890.png  1475819010.png  1475819130.png  1475819250.png
1475818920.png  1475819040.png  1475819160.png  1475819280.png
1475818950.png  1475819070.png  1475819190.png  1475819310.png

動画への変換

encode.shを使うと1日のスクリーンショット画像を動画に変換できる。

例えば、以下のコマンドを実行すると~/screencapture/20161007.m4vという8FPSの動画ファイルができる。

$ cd ~/screencapture
$ ./encode.sh 20161007

encode.shの中のVIDEO_WIDTHVIDEO_HEIGHTを変更すると、動画ファイルの大きさが変更できる。