0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ffmpeg で GIF アニメーション作り 手順書

Posted at

動画ファイルから GIF アニメーションを作るのを、ffmpeg のみで完結させます。

「コマンドの履歴まっさらでオプション忘れた」なんて時のメモ用に。

1. 動画の下ごしらえ

動画がフル HD であるなどの場合、そのまま GIF にしてしまうと膨大なサイズになってしまいます。そこで、ある程度ダウンスケールするなどの下ごしらえを行います。

時間切り取り

ffmpeg -ss START -to END -i "input.mp4" "output.mp4"

例: -ss 0:02 -to 0:04

-ss で開始時間、-to で終了時間を指定。

映像切り取り (トリミング, クロップ)

ffmpeg -i "input.mp4" -vf "crop=W:H:X:Y" "output.mp4"

例: crop=400:300:80:70

W:H に出力の横:縦サイズ、X:Y に切り取り矩形の左上端の座標を指定。

解像度変更 (スケール)

ffmpeg -i "input.mp4" -vf "scale=W:H" "output.mp4"

例: scale=640:-1

1辺の解像度を指定し、縦横比を維持してもう 1辺を指定したい場合、-1 を指定することで自動で解像度が決められます。

以下のページで、詳しい例と共に解説されています。

フレームレート変更

ffmpeg -i "input.mp4" -vf "fps=F" "output.mp4"

例: fps=20

用途にもよりますが、60fps はややオーバー。体感的には 30fps が上限かと思います。

備考 - 複数の効果を用いるには

ffmpeg -ss START -to END -i "input.mp4" -vf "crop=W:H:X:Y,scale=W:H,fps=F" "output.mp4"

-vf の後の項目をコンマ , 区切りで連続で書きます。(時間切り取りは -vf と別のオプション)

ビデオフィルタ -vf は、左から指定した順に適用されます。上の例では、トリミング後にスケール、最後にフレームレート変更という順で処理が行われます。

2. GIF に変換する

ffmpeg -i out.mp4 -vf "palettegen=stats_mode=diff" pal.png
ffmpeg -i out.mp4 -i pal.png -lavfi "paletteuse" out.gif

初めに 256色パレットを生成、その後にパレットを使用して動画から GIF を作成します。

GIF の仕様で、1画像 (正確には 1レイヤごと) に 256色しか使用することができません。これは、GIF が昔のフォーマットであることの名残です。

3. 後片付け

以上の手順における中間ファイルを削除します。

rm pal.png out.mp4

中間ファイルを作らずに進める方法もありますが、オプションを簡潔にするため中間ファイルを通すことにしました。中間ファイル無しで進めるには、本記事末尾に貼った記事を参照してみてください。

ちなみに

趣旨から離れるのであえて省きましたが、GIF の作成手順は他にもいくつかあります。キレイさを犠牲に最も手軽に作るなら、出力の拡張子を .gif にしてやるだけでも OK です。

ffmpeg -i out.mp4 out.gif

こちらの記事で、実例と共に様々な最適化の試みをしてくださっています。高みを目指してチューニングしたい方は、試してみると良いかもしれません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?