Macのスクリーンショットで1日の作業を記録して動画で振り返り

スクリーンショットを10秒に1回撮影して連番の画像で保存するスクリプトを走らせて1日の作業を記録し、一日の最後にffmpegで動画にして振り返りをしてみた。結構面白いよ。

社内掲示板やメーラやエディタで文章がにょきにょき伸びていくのが見えるのも楽しいけど、一日の終わりに「ああそうそう、これを調べてたんだった、途中でインタラプトが入って忘れてた」「この調べ物をした後サイドバーに出てた記事を読みふけってしまったけど、必要ではなかったな」「この作業は今やるべきことじゃなかったな」「時間を結構無駄にしたな」などという振り返りができる。反省。

10秒に1回撮影したのを10FPSで動画にしているから1時間が36秒になる。もうちょっと速くしてもいいかも。1分に1枚にすると1時間が6秒か。その間くらいかなー。

記録用スクリプトが連番で画像を吐いているのは後でffmpegで読み込ませるため。screencaptureはMacの画面撮影コマンド。ffmpegに-s 720x450を指定しているのは、僕の環境の画面が1440x900だからその半分。今回の実験では3500枚くらいのスクリーンショットが撮られて、12MBくらいの動画ができた。

記録用スクリプト(python)

from time import sleep
import subprocess
import os
outdir = 'screencapture'

counter = 1
def capture():
    global counter
    filename = '%08d.png' % counter
    outpath = os.path.join(outdir, filename)
    subprocess.call(['screencapture', outpath])
    counter += 1

while True:
    capture()
    sleep(10)

動画作成用スクリプト

#!/bin/bash

original_images=screencapture
ldate=$(date +%Y%m%d)
ffmpeg -y -f image2 -r 10 -i "$original_images/%08d.png" -s 720x450 "screencapture$ldate.avi"

追記:複数モニタがある場合は複数ファイル名を指定するといいらしい。

追記:「スクリーンショットをとっておくやつに、isight でとった画像をくっつけて動画にしたらおもしろいとおもうんだけど誰かやらないかな。」by id:tokuhirom  それはたしかに面白そう。ライフログカメラで作業中の自分の顔を録画したことがあるけど、悩んだり眉毛をいじったり腕を組んだりしていて結構面白い。

追記: オプションに-xをつけるとシャッター音を消せる。-Cをつけるとカーソルも撮れるようだ