【FFmpeg】ピクセルアート向けの拡大処理

ネコニウム研究所

PCを利用したモノづくりに関連する情報を掲載するブログ

【FFmpeg】ピクセルアート向けの拡大処理

2022-2-4 | ,

FFmpegを使ってピクセルアート向けの拡大処理をおこないたい!シャープに!

概要

FFmpegを使って拡大処理をおこなうとデフォルトではbicubicというアルゴリズムが使われる。このアルゴリズムは、色数の多い画像の拡大には良いんだけども、ピクセルアートのような色数が少なめ、且つ、輪郭のシャープさを保って拡大したい場合には向かない。
シャープさを保って拡大するには、オプションでneighborというアルゴリズムが使われるように指定すると良い。

仕様書

環境

  • Windows 10 Home Version 21H1(OS ビルド 19043.1415)
  • FFmpeg 4.2

手順書

下記は、引数で渡されたディレクトリにある連番画像をシャープさを保ちながら横幅が640pxになるように拡大し、mp4に変換するサンプルです。

@echo off

:loop

if "%~1" == "" goto end

set output=%~n1
set attr=%~a1

if exist %~1 (
    if %attr:~0,1%==d (
        ffmpeg -y -framerate 15 -i %~f1\%%03d.png -vcodec libx264 -pix_fmt yuv420p -vf scale=640:-1 -sws_flags neighbor -r 15 -crf 16 -an %output%\%output%.mp4
    )
)

shift
goto loop

:end

pause

上記のBatchファイルを実行する前にffmpeg.exeがあるディレクトリにパスを通しておく。もしくは、Batchファイル内のffmpegコマンドをフルパスで入力しておく。

作ったbatファイルに変換したい連番画像が保管されてるディレクトリをまとめてドラッグ・アンド・ドロップすると処理が逐一開始される。

解説

ffmpegコマンドのオプションについて簡単に解説する。

-scale=640:-1 は出力する動画のサイズを設定する。この場合は、横幅が640pxになるように拡縮され、縦幅はアスペクト比が保たれるよう自動的に設定される。

-sws_flags neighborは拡縮に使われるアルゴリズムを設定する。neighborはシャープさを保ちながら拡縮するのに向いてるアルゴリズムです。このオプションを設定しない場合はbicubicというアルゴリズムが使われる。

まとめ(感想文)

ピクセルアートを拡大して動画にしたい場合に良いかもね!

引用・参考文献