動画からアニメーションGIFを生成

LINEで送る
Pocket

動画や画像の編集は、スマフォのアプリや動画、画像編集ソフトを使って行っている方は多いと思います。Linux でも動画、画像編集アプリは数多く用意されています。しかしLinux上で動くほぼ全てのアプリは、動画は FFmpeg、画像は、ImageMagick というライブラリが使用されています。これらはコマンドでも利用出来るので、今回は、コマンドだけで動画の1シーンを jpeg ファイルとして抜き出して、それを連結して gif ファイルを作成するという方法を紹介します。

FFmpeg と ImageMagick は以下のコマンドでインストールします。

$ sudo apt install ffmpeg imagemagick

まず動画から1シーンを切り出す前に、動画の情報を -i オプションを使って取得します。

$ ffmpeg -i input.m4v
      :
  Duration: 00:48:32.13, start: 0.000000, bitrate: 1426 kb/s 動画の長さと開始時間

動画から画像を取り出す方法は以下のコマンドです。抜き出す始点を秒数で指定します。

$ ffmpeg -i input.m4v -ss 60 -vframes 1  out.jpg

連続で画像を取り出す場合は以下のように実行します。

$ ffmpeg -i input.m4v -ss 60 -t 10 -r 1 out_%03d.jpg
$ ls
out_001.jpg  out_002.jpg  out_003.jpg  out_004.jpg  out_005.jpg
out_006.jpg  out_007.jpg  out_008.jpg  out_009.jpg  out_010.jpg

-i input.m4v : 入力動画
-vframes : フレーム数
-ss 60 : 抜き出し始点秒 (開始から60秒目から)
-t 10 : 抜き出し秒数 (10秒)
-r 1 : 1秒あたり何枚抜き出すか
out_%03d.jpg : jpeg で[out_001.jpg]から連番で書き出し

出力した画像ファイルを ImageMagick に含まれている convert コマンドで結合させます。

$ convert -layers optimize -loop 0 -delay 100 out_*.jpg out.gif

eog(Eye of GNOME) でgifファイルを確認できます。

$ eog out.gif

-layers optimize : 画像の最適化
-loop : ループの回数(0 なら無限ループ)
-delay : 画像の切り替わるタイミングミリ秒

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください