Main Logo
ffmpegコマンド集|動画変換・連番・gif・webpをbatで半自動化(Windows版)

ffmpegコマンド集|動画変換・連番・gif・webpをbatで半自動化(Windows版)

ffmpegで動画変換・連番画像化・gif,webp,apng,avif生成を行う実用コマンド集。Windows向けにbatで半自動化する方法も解説。

ffmpegのよく使うコマンドを用途別に整理。動画変換、画像抽出、アニメーション生成、配信、batによる半自動化まで網羅。


ffmpegコマンド集|動画変換・画像変換を半自動化する

ffmpegは、動画変換・画像抽出・アニメーション生成・配信まで何でもできる万能ツールです。
実は多くの動画編集ソフトや配信ツールの内部でも ffmpeg が使われています。

本記事では、Windows環境で実務によく使う ffmpeg コマンド
そのままコピペで使える形」でまとめました。

さらに、batファイルによる半自動化も紹介します。

この記事で分かること

  • 動画 ⇔ 連番画像の変換
  • gif / webp / apng / avif の生成
  • 配信(rtmp / rtsp / srt)
  • ffmpegをbatで半自動化する方法
  • コーディック・音声設定の基本

環境

windows 10
windowsであれば大丈夫です。
nvidiaのグラボがあればなお良い。

コマンド一覧

動画から連番画像を作成する

フレームレートを指定することで希望の間隔で画像を抽出できます。

ffmpeg -i movie.mp4 -r 15 output_%06d.png

連番画像から動画を作成する

連番から動画にするにはコーディック、ピクセルフォーマット、フレームレートを指定した方がいいです。 以下はdemo0001.jpg~demo0421.jpgの画像を使用し、60FPSの動画になります。

ffmpeg -framerate 60 -i demo.%04d.jpg -vcodec libx264 -pix_fmt yuv420p -r 60 out.mp4

動画のリサイズ

動画サイズを横720px、縦比率に合わせる

ffmpeg -i movie.mp4 -vf scale=720:-1 out.mp4

動画と音声を合成する

ffmpeg -i 1.mp4 -i one.wav -map 0:0 -map 1:0 comp.mp4

デバイス一覧を確認(Windows)

ffmpeg -list_devices true -f dshow -i a

gifアニメーションを作成する

gifアニメーション

ffmpeg -i %1 -r 24 "%~n1.gif"

静止画webp

ffmpeg -i %1 -vcodec libwebp -lossless 0 "%~n1.webp"

webpアニメーション

optionについて
エンコード損失の指定0~100 
lossless 0 損失を許可 
画質について0=高画質,30低画質
-qscale 5 
フォーマット
format=pal8
その他 rgb24 rgba yuv420p 
アニメーションのループ回数
-loop 0
ffmpeg -i %1 -vcodec libwebp -an -lossless 0 -qscale 5 -vf fps=8,scale=640:-1,format=pal8 -y -loop 0  "%~n1.webp"

apngアニメーションを作成する

optionについて
使用する色の数
colors=16

apngアニメーション カラーパレットを作成しそれを参考に、apngで使う色を決定させている。

ffmpeg -i %1 -vf "scale=640:-1,split[m][a];[m]palettegen=max_colors=16:stats_mode=full[palette];[a][palette]paletteuse" -plays 0 -pix_fmt pal8 -r 8 -b:v 100k -y   "%~n1.apng"

avif画像を作成する(高速)

ffmpeg -i %1 -c:v libaom-av1 -b:v 80k -r 8 -vf scale=640:-1,framerate=8 -pix_fmt yuv420p -aom-params lossless=0 -movflags faststart -g 80 -cpu-used 8 -y  "%~n1.avif"

libsvtav1を使っている。libaomは遅すぎて実用的ではない。

配信で使うffmpeg

rtsp

ffmpeg -re -stream_loop -1 -i "F:\rtsptest.mp4" -vcodec libx264 -bf 0  -f rtsp -rtsp_transport tcp rtsp://domain:8554/

rtmp

ffmpeg -re -stream_loop -1 -i "F:\rtsptest.mp4" -c:v h264_nvenc -c:a copy -bf 0  -f flv rtmp://domain/key

srt

srtはffmpegの古いバージョンffmpeg 4.0または、ソースからビルドをする必要があります。windowsの場合はビルドはあきらめましょう
ffmpeg -re -stream_loop -1 -i "F:\rtsptest.mp4" -c:v copy -c:a copy -f mpegts 'srt://domain:3000'

テスト用の映像・音声を生成する

デモ映像testsrc

ffmpeg -f lavfi -re -i "testsrc=size=1280x720:rate=30" -c:v libvpx  -f rtp "rtp://192.168.1.105:5004

デモ音声sine=frequency=800

ffmpeg -f lavfi -re -i "testsrc=size=1280x720:rate=30" -f lavfi -i "sine=frequency=800" -g 0 -c:v libx264 -c:a aac -strict experimental -f flv rtmp://test/publish

ffmpegをbatで半自動化する(Windows)

半自動化はbatファイルを作成します。

batテンプレ

@ECHO OFF
cd /d %~dp0
:REPEAT
ffmpeg -i %1 ****ffmpeg command*****
if "%~2"=="" GOTO EXIT
shift
GOTO REPEAT
:EXIT
echo msgbox "ファイル名:%~n0",vbOKOnly,"終わったよ" > %TEMP%/ffmpegmsg.vbs & %TEMP%/ffmpegmsg.vbs

batファイルの細かい説明はここではしません。

修正が必要なヶ所

以下二行だけ修正すれば大丈夫なはずです。 pause

ffmpeg -i %1 ****ffmpeg command*****
echo msgbox "ファイル名:%~n0",vbOKOnly,"終わったよ" > %TEMP%/ffmpegmsg.vbs & %TEMP%/ffmpegmsg.vbs

「echo msgbox」の部分は処理終了後にメッセージボックスを表示させています。
echoの行をただ削除してもいいのですが、処理が最後まで終わったのか分からないため「pause」にするのがいいと思います。

動画変換時によく使うコマンド

コーディックの指定

動画のコーディックを指定します。 指定しなくても勝手にやってくれるので最悪なくても問題はありません。

動画のコーディック指定

コーディックの指定を行います。
※「-vcodec」と「-c:v」は全く同じ意味です。

-vcodec h264_nvenc
-c:v libx264

h264コーディックが一般的なコーディックなのでこれさえ覚えておけば大丈夫です。 他に必要になるとすれば av1、vp9 、h265、 h265(nvidia)、vp8等を使用するかもしれません。

-c:v libsvtav1
-c:v libvpx-vp9
-c:v libx265 
-c:v nvenc_hevc
-c:v libvpx

音声のコーディック指定

音声コーディックの指定 「-c:a」または「-acodec」 使い方

-c:a mp3
-acodec aac

音声コーディック一覧 mp3 aac opus libopus alibfdk_aac libmp3lame

結局どれを使う?

こだわり等がなければこれでいいのではないか?

-c:v libx264
-c:a mp3

音の調整

無音化

-an

音量調整

-af volume=12dB

ビットレート

-ab 128k

サンプリングレート

-ar 44100

カット

ss初めの位置,終了位置 -t

-ss 200 -t 360

ピクセルフォーマット

-pix_fmt yuv420p

まとめ

ffmpegは慣れるとGUIソフト以上に高速かつ柔軟に動画処理ができます。 特にWindowsでは、batによる半自動化と組み合わせることで作業効率が大幅に向上します。

必要なコマンドだけ拾って、実務に活用してください。

関連記事

コメントを読み込み中...