Creating a GIF animation from one PNG
From upper left
左上からズームアップ(デフォルト)
ffmpegでプレビュー
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d='25*4':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -
ffmpegでコンバート
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d='25*4':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
画像をズームインするには"zoompan"フィルタを使用します。"zoompan"フィルタでは、フレームごとに評価し、ズームインする距離を設定するzオプションが使用できます。
zoompan=z='zoom+0.0015'で各フレームの前のズーム値に0.0015を加えて15%拡大アニメーションを設定します。
:d='25*4'でエフェクトの持続時間(デフォルトの25フレーム/秒で4秒)の指定
:s='480*270'で出力サイズ(width*heigt)を指定します。
split[a],palettegen,[a]paletteuseでパレットを最適化しています。
From upper right
右上からズームアップffmpegでプレビュー
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d='25*4':x='iw-(iw/zoom)':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -
ffmpegでコンバート
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d='25*4':x='iw-(iw/zoom)':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
From lower left
ffmpegでプレビュー
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d=25*4:y='ih-(ih/zoom)':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -
ffmpegでコンバート
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d=25*4:y='ih-(ih/zoom)':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
From lower right
ffmpegでプレビュー
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d=25*4:x='iw-(iw/zoom)':y='ih-(ih/zoom)':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -
ffmpegでコンバート
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d=25*4:x='iw-(iw/zoom)':y='ih-(ih/zoom)':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
From center position
ffmpegでプレビュー
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d=25*4:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -
ffmpegでコンバート
ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d=25*4:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
loop
ffmpegでプレビュー
ffmpeg -i input.png -filter_complex "zoompan=d=25*4:z='if(gte(zoom,2)+eq(ld(1),1)*gt(zoom,1),zoom-0.04*st(1,1),zoom+0.04+0*st(1,0))':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -
ffmpegでコンバート
ffmpeg -i input.png -filter_complex "zoompan=d=25*4:z='if(gte(zoom,2)+eq(ld(1),1)*gt(zoom,1),zoom-0.04*st(1,1),zoom+0.04+0*st(1,0))':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
From center 1.2 to 1
ffmpegでプレビュー
ffmpeg -i input.png -filter_complex "zoompan='if(eq(on,1),1.2,zoom-0.0015)':d=25*4:x='(iw-iw/zoom)/2':y='(ih-ih/zoom)/2':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -
ffmpegでコンバート
ffmpeg -i input.png -filter_complex "zoompan='if(eq(on,1),1.2,zoom-0.0015)':d=25*4:x='(iw-iw/zoom)/2':y='(ih-ih/zoom)/2':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
参考にさせていただきました。Specal thanks