BioErrorLog Tech Blog

試行錯誤の記録

コマンドでmp4やmov動画ファイルをGIFに変換する | ffmpeg

ffmpegコマンドで、.mov形式や.mp4の動画ファイルをGIFファイルに変換する方法の備忘録です。

はじめに

画面キャプチャによって出力される.movファイルを、GIFに変換したくなることがありました。

ffmpegコマンドで簡単にできたので、備忘録を残します。

なお今回はmovファイルを取り上げて検証しましたが、mp4など他の形式の動画ファイルでも同様に実行可能です。

補足: ffmpegとは

ffmpegロゴ | 画像はwikipediaより引用

ffmpegは、画像や動画の処理に使われる非常に有名なオープンソースのソフトウェアです。

homebrewなどの各種パッケージマネージャや、公式サイトから実行ファイルを取得してインストールできます。

ffmpegでmov動画ファイルをGIFに変換する

GIFに変換する

まず、オプションを使用せずそのままGIF変換を行うには、下記のコマンドを実行します。

ffmpeg -i input.mov output.gif

-iオプション(inputオプション)に変換元のファイル名を指定し(input.mov)、その後に出力後のファイル名を.gif拡張子で指定します(output.gif)

画面キャプチャ動画(.mov)をそのままGIF変換したもの

幅を指定してGIF変換する

アスペクト比を維持したまま幅を指定してサイズ変更するには、下記のようなコマンドを実行します。

ffmpeg -i input.mov -vf "scale=<横幅(pixel)>:-1" output.gif

-vfオプションに"scale=100:-1"のように幅を指定します。

-vf-filter:v(video filter)のエイリアスです。 動画ファイル変換に関する各種フィルターをここで指定できます。

scale=<横幅(pixel)>:-1とすることで、幅を指定しながらアスペクト比を維持した縦幅(-1)が自動設定されます。

実行例:

ffmpeg -i input.mov -vf "scale=100:-1" output.gif

横幅を100pxに指定してGIF変換した例

fpsを指定してGIF変換する

GIFのフレームレート(fps)を指定してGIF変換するには、下記のようなコマンドを実行します。

ffmpeg -i input.mov -vf "fps=<フレームレート>" output.gif

-vfオプションに"fps=5"のようにfpsを指定します。

実行例:

ffmpeg -i input.mov -vf "fps=5" output.gif

5 fpsでGIF変換した例

動画をカットしてGIF変換する

x秒からy秒まで、のように動画の一部分をカットしてGIF化するには、下記のようなコマンドを実行します。

ffmpeg -i input.mov -ss <開始時間> -t <秒数> output.gif

-ssオプションにカットを開始する時間を、-tオプションに切り出す秒数を指定します。

例えば、開始0.5秒から1秒間の動画を切り出してGIF変換するにはこのようなコマンドを実行します。

ffmpeg -i input.mov -ss 0.5 -t 1 output.gif

動画を一部切り出してGIF変換した例

複数の変換を組み合わせて同時に実行する

ここまで紹介した変換を全て組み合わせてGIF変換すると、このようなコマンドになります。

ffmpeg -i input.mov -ss 0.5 -t 1 -vf "scale=100:-1,fps=5" output.gif

-vfオプションに渡すフィルターは、カンマ,区切りで複数渡せます。 それ以外のオプションも同時に指定可能です。

ここまで紹介した変換を全て組み合わせてGIF変換した例

おわりに

以上、ffmpegでmov動画ファイルをGIFに変換する方法を複数パターン紹介しました。

ffmpegはシンプルなコマンドでありながら実に多機能で便利ですね。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

参考