FFmpegをwindowsで使う

バッチファイルを作る

ここでは理屈抜き最小限の手順のみ紹介する。興味のある人は「FFmpeg」ググって更に情報を得てほしい。

メモ帳などテキストエディタで新規ファイルを作成する。

例:mp4ファイルの軽量化(圧縮)をする

任意のフォルダに変換したいmp4動画ファイル(複数でも可)を入れ同フォルダ内に「output」フォルダを作っておく。

for %%f in (*.mp4) do (
ffmpeg -y -i "%%~nf".mp4 -c:v libx264 -crf 23 -codec:a copy -movflags faststart "output\%%~nf".mp4
)

上記コードをメモ帳にコピー&ペースト。

「名前を付けて保存」、ファイル名「〇〇〇.bat」、ファイルの種類「すべてのファイル」で変換元動画ファイルと同じフォルダに保存

出来上がった.batファイルをダブルクリックすると例の黒ウインドウが立ち上がり、動画の変換が始まり、「output」フォルダに書き出される。

便利なバッチコード例

フォルダ内のmp4動画データをいいかんじに再圧縮して一括で軽量化する

for %%f in (*.mp4) do (
ffmpeg -y -i "%%~nf".mp4 -c:v libx264 -crf 23 -codec:a copy -movflags faststart "output\%%~nf".mp4
)

「-crf 23」のところが、圧縮後の映像品質を指定する数値。

数が小さいほど圧縮率が低く品質が良い。18以下は容量増えても、ほぼ品質が変わらない。24以上は画質の劣化が目立ってくる。


Web用動画(YouTubeアップロードにも使用)

for %%f in (*.mp4) do (
ffmpeg -y -i "%%~nf".mp4 -movflags +faststart -c:a aac -ac 2 -ar 48000 -ab 256k -aac_coder twoloop -c:v libx264 -crf 20 -profile:v high -bf 2 -r 30 -g 30 -coder 1 -pix_fmt yuv420p "output\%%~nf".mp4
)

「-ab 256k」音声の品質。数が大きいほど高品質。128kで十分実用。
「-crf 20」数が小さいほど高品質、大容量。


フォルダ内のmovファイルをmp4に一括変換

for %%f in (*.mov) do (
ffmpeg -y -i "%%~nf".mov -movflags +faststart -c:a aac -ac 2 -ar 48000 -ab 256k -aac_coder twoloop -c:v libx264 -crf 20  -pix_fmt yuv420p "output\%%~nf".mp4
)

「for %%f in (*.mov) 」と「ffmpeg -y -i "%%~nf".mov」のところの「.mov」を変えると他形式にも対応可。

上記参考:mtsファイルをmp4に変換

for %%f in (*.mts) do (
ffmpeg -y -i "%%~nf".mts -movflags +faststart -c:a aac -ac 2 -ar 48000 -ab 256k -aac_coder twoloop -c:v libx264 -crf 20 -pix_fmt yuv420p "output\%%~nf".mp4
)

インターレース解除してm2tsファイルをプログレッシブmp4に変換

for %%f in (*.m2ts) do (
ffmpeg -y -i "%%~nf".m2ts -movflags +faststart -c:a aac -ac 2 -ar 48000 -ab 256k -aac_coder twoloop -vf yadif=0:-1:1 -c:v libx264 -crf 20 -pix_fmt yuv420p "output\%%~nf".mp4
)

「-vf yadif=0:-1:1」がインターレース解除


複数のサイズが異なる動画の解像度を一気に統一

for %%f in (*.mp4) do (
ffmpeg -y -i "%%~nf".mp4 -movflags +faststart -c:a aac -ac 2 -ar 48000 -ab 256k -aac_coder twoloop -vf "scale=-1:1080:force_original_aspect_ratio=decrease,pad=ceil(iw/2)*2:1080:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -crf 20 -pix_fmt yuv420p "output\%%~nf".mp4
)

「-vf scale=-1:1080」と「pad=ceil(iw/2)*2:1080」がサイズの指定。縦の解像度1080、縦横比は素材に準ずる。


ストリーミング用フルHD版とSD版同時書き出し

変換元は1920x1080ビットレート高めのmp4

for %%f in (*.mp4) do (
ffmpeg -y -i "%%~nf".mp4 -c:v libx264 -crf 23 -r 30 -g 30 -codec:a aac -aac_coder twoloop -ar 48000 -ab 128k -movflags faststart "output\%%~nf"h.mp4
ffmpeg -y -i "%%~nf".mp4 -c:v libx264 -crf 23 -s 960x540 -r 30 -g 30 -codec:a aac -aac_coder twoloop -ar 48000 -ab 128k -movflags faststart "output\%%~nf"s.mp4
)

「ffmpeg -y -i "%%~nf".mp4」のところと「ffmpeg -y -i "%%~nf".mp4」(2個所)のところのmp4を書き換えれば他の形式からの変換も可能


保存用に低容量にしても画質があまり落ちないh265に変換

変換元はh264のmp4

for %%f in (*.mp4) do (
ffmpeg -y -i "%%~nf".mp4 -c:v libx265 -crf 23 -codec:a copy -movflags faststart "output\%%~nf".mp4
)