FFMPEG 動画をGIFに変換する方法

FFMPEGを使用して、動画ファイルをGIFファイルに変換する方法を紹介します。
デフォルトのFFMPEG GIFエンコーダーでは色が変なることがありましたので、パレットを使用して最適化するコマンドを記載します。
また、最後に簡単に変換できるバッチファイルも記載いたします。

FFMPEG 動画 GIF 変換コマンド

下記コマンドで動画ファイルからGIFファイルへの変換が可能です。

ffmpeg -i input.mp4 -filter_complex "[0:v] fps=10,scale=640:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" output.gif

また、以下のようにパレットを使用しない方法でもGIFファイルは作成可能ですが、
FFMPEGのネイティブのGIFエンコーダーではおかしな色となってしまいますのでおすすめできません。

ffmpeg -i input.mov -r 10 -vf scale=640:-1 -f gif output.gif

オプションの解説

fps

fps=10

上記のオプションはGIFファイルのFPSを指定しています。

scale

scale=640:-1

上記のオプションはGIFファイルの解像度を指定しています。
横幅を640に固定し、縦幅をアスペクト比を維持した値に自動計算します。

指定した秒数で切り取りたい場合

「-ss」「-t」オプションを指定することで、指定秒数で切り取ることが可能です。

// 2秒地点から5秒間のGIFファイルを作成
ffmpeg -i -ss 2 -t 7 input.mp4 -filter_complex "[0:v] fps=10,scale=640:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" output.gif

動画 GIF変換 バッチファイル

毎回、上記のコマンドを入力するのは手間かと思いますので、バッチファイルを作成してみました。

バッチファイル(mov2gif.bat)

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

rem FFMPEGのパス
set FFMPEG_PATH=C:\ffmpeg.exe

rem ---------------------------------------------------

if not "%~1"=="" (
	rem 対話入力
	set WIDTH=640
	set /p WIDTH="WIDTHを入力してください。 (初期値=640):"
	echo WIDTH: !WIDTH!

	set FPS=10
	set /p FPS="FPSを入力してください。 (初期値=10):"
	echo FPS: !FPS!

	set TRIM=n
	set /p TRIM="開始時刻・終了時刻を設定しますか? (y or n) (初期値=n):"

	echo TRIM: !TRIM!
	if "!TRIM!"=="y" (
		set START=0
		set /p START="開始時刻[秒]を入力してください。 (初期値=0):"
		echo START: !START!
		
		set END=1
		set /p END="終了時刻[秒]を入力してください。 (初期値=1):"
		echo END: !END!
		
		set /a DURATION=!END!-!START!
		set TIME_OPTION=-ss !START! -t !DURATION!
	) 
	
	rem FFMPEG 実行
	"%FFMPEG_PATH%" -y -i "%~f1" !TIME_OPTION! -filter_complex "[0:v] fps=!FPS!,scale=!WIDTH!:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" "%~d1\%~p1%~n1.gif"
) else (
	echo [ERROR] 第一引数に変換する動画ファイルのパスを指定してください。
)

pause

使い方

「mov2gif.bat」バッチファイルに動画ファイルをドラッグ&ドロップします。

DOSウィンドウが開き、GIFファイル作成の設定を対話形式で入力します。
(未入力でEnterキーを押すことで初期値の値を設定します。)

動画からGIF変換バッチファイル 実行画面

また、このバッチファイルを実行するにはFFMPEGが必要です。
「mov2gif.bat」の5行目にffmpeg.exeがあるファイルパスを設定してください。


参考:
https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/

コメント

タイトルとURLをコピーしました