Skip to content

Instantly share code, notes, and snippets.

@wakamsha
Last active June 16, 2017 10:17
Show Gist options
  • Save wakamsha/ce2103eb93bc25b05563bf0c9ca91995 to your computer and use it in GitHub Desktop.
Save wakamsha/ce2103eb93bc25b05563bf0c9ca91995 to your computer and use it in GitHub Desktop.
QuickTime Player でキャプチャした .mov からアニメーションGIF を生成する方法

1. QuickTime Player でキャプチャ

  1. Mac 標準搭載の QuickTime Player を起動し、新規画面収録を選択。
  2. キャプチャ対象となる領域をドラッグして選択。収録開始ボタンクリックで録画が開始される。
  3. + ctrl + esc で収録停止。

2. ffmpeg で動画を連番画像に切り出す

アニメーションGIF の仕様に合わせた fps で画像の切り出しを行う。

$ ffmpeg -i input.mov -r 15 frames/%03d.png

この例では、カレントディレクトリ配下の frames/ディレクトリに三桁の連番をファイル名とした png 画像群が出力される-r は切り出しにおける fps を指定するオプション。

アニメーションGIF のフレーム間の間隔は『0.01秒』単位である。つまりフレーム間隔 0.01秒で 100fps ( fps = 秒間フレーム数 ) となり、0.02秒で 50fps、0.03秒で33.33fps、0.04秒で25fps… となる。QuickTime Player で画面収録すると、収録時間やマシンスペックに応じて出力される動画の fps は変動するため、アニメーション GIF の仕様に合わせた fps で画像切り出しを行うのが吉。

※ブラウザ上での動作確認程度なら 15fps くらいで丁度いいかも。

3. ImageMagick で連番画像からアニメーションGIF を生成

出力された連番画像を ImageMagick の convert コマンドを用いてアニメーションGIF を生成する。

$ convert -delay 2 -layers optimize frames/*.png output.gif

-delay オプションでフレーム間隔を 0.01秒単位で指定できる。ここでは上記の連番画像切り出し時の fps に合わせて2 ( = 0.02秒間隔 = 50fps ) を指定している。-layers optimize オプションを指定するとアニメーションGIFが最適化される ( フレーム間で差分のある箇所だけを使用するなど ) 。

※ 15fps なら 6 で OK。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment