Amazonで商品を見るセール会場へ

FFmpegの基本コマンド集|変換・切り出し・音声抽出・GIFの確認手順

FFmpegは、映像・音声をコマンドで変換・抽出・切り出しするツールです。形式だけを替える操作と、映像の画質・大きさを変える操作では指定が異なります。最初に目的を選び、元ファイルを残した別名の出力で試します。

目的方法と確認点
形式だけ替える-c copyで再多重化。出力の形式が入力コーデックに対応するか確認
時間を切り出す-ssと-t。コピーは開始がキーフレームに左右される
音声だけ取り出す-mapで必要な音声を選ぶ。AACコピーとMP3変換を区別
容量を減らす解像度とlibx264のCRFを調整。容量・画質の両方を確認
短いGIFや画像にするfps・scale・パレット、または1フレームを抽出
複数動画をつなぐ共通設定の入力をリストで結合。詳細は結合記事へ

9月29日の1280×720・12秒・30fpsの旧測定と10月2日の確認記録を保持し、今回の640×360入力の結果は後半へ分けています。2026年10月3日の使用版はWindows 11 Pro・FFmpeg 9.0.2(gyan.dev full build)。実際の撮影素材の画質・速度やGUIの動作を比較した結果ではありません。

目次

WindowsでFFmpegを準備する

ffmpeg -version
ffprobe -version

すでに版が表示されれば追加インストールは不要です。未導入なら公式ダウンロードページに掲載されたWindowsビルドを選ぶか、WinGetで次のIDを指定します。WinGetの–idと、完全一致の-eを使う書式はMicrosoftのinstall説明で確認できます。

winget install --id Gyan.FFmpeg -e

導入後はPowerShellを開き直して版を確認します。見つからない場合は、実際のffmpeg.exeの場所とPATHを確認します。展開版を使う場合も既存PATH全体を置き換えず、binの項目を追加します。

入力・出力と選ぶトラックを確認する

既存の動画を使う場合は、sample.mp4をその入力名に置き換えます。練習入力を使う場合は、次の節の生成コマンドで作ってから情報を確認します。

ffprobe -v error -show_entries stream=index,codec_type,codec_name,width,height,sample_rate,channels:format=duration -of compact "sample.mp4"

ffmpegは入力を-iで指定し、その出力へ適用する設定の後に出力名を書きます。以下の映像処理は-map 0:v:0で最初の映像、-map “0:a:0?”で存在する最初の音声を選びます。?は音声がない入力でもその選択だけを省略する指定です。追加の音声・字幕・添付をすべて保持する例ではありません。必要なトラックをffprobeで選んでから処理します。

libx264・yuv420pの例は8bit SDRの再生用コピーです。HDR・10bit・透過・色の保持には別の形式や設定が必要になります。-c copyでも出力の入れ物とコーデックの対応は確認してください。拡張子だけ変えて、同じ内容を入れられるとは限りません。

同じ入力でコマンドを試す

以下のコマンド例は、動画と出力先を置く作業フォルダーで PowerShell を開いて実行します。

元動画は別名で保管し、出力ファイル名が既存ファイルと重ならないようにしてください。

以下は-nで既存出力への上書きを止めます。停止したら出力を別の未使用の名前に変えます。入力と出力に同じファイルを指定しません。

個人の動画を使わずに試すなら、次のコマンドで12秒・640×360・30fps・AAC音声つきの sample.mp4 を生成できます。

ffmpeg -n -f lavfi -i "testsrc2=size=640x360:rate=30:duration=12" -f lavfi -i "sine=frequency=440:sample_rate=48000:duration=12" -c:v libx264 -crf 23 -pix_fmt yuv420p -c:a aac -shortest sample.mp4

下の既存の容量表は、9月29日に使った1280×720の入力での結果です。

この640×360の入力では同じファイルサイズにはなりません。

形式を変える(中身はそのまま)

ffmpeg -n -i sample.mp4 -map 0:v:0 -map "0:a:0?" -c copy remux.mkv

-c copy は、映像と音声を作り直さずに、入れ物(コンテナ)だけを替えます。

2026年9月29日の1280×720の入力では、4,809,665 → 4,802,823バイトでした。再エンコード時間は省けますが、所要時間は入力の大きさや保存先で変わります。

切り出す

ffmpeg -n -ss 3 -i sample.mp4 -t 4 -map 0:v:0 -map "0:a:0?" -c copy cut_copy.mp4
ffmpeg -n -ss 3 -i sample.mp4 -t 4 -map 0:v:0 -map "0:a:0?" -c:v libx264 -crf 23 -pix_fmt yuv420p -c:a aac cut_enc.mp4

上の例は入力の3秒付近から4秒分を指定します。-ssは開始、-tは出力する長さです。次の表は9月29日の旧入力で3〜7秒を比較した既存結果です。

方法旧入力の結果
-c copy4.1秒/2,844,078バイト/記録212コマ(表示122コマ)
再エンコード4.0秒/1,537,303バイト/120コマ
2026年9月29日・1280×720の旧入力での結果。今回の640×360入力ではありません。

練習用の動画のキーフレーム(単独で表示できるコマ)は、0秒と8.33秒にしかありませんでした。

-c copy では、3秒から切り出しても、0秒のキーフレームから中身が入り、見えないコマが90コマ分ふくまれました。

フレーム単位の開始位置が必要なら再エンコードを検討します。入力の-ssで再エンコードすると、既定のaccurate_seekで指定開始までの余分な区間をデコードして捨てます。コピーでは余分な区間が残るため、開始・末尾を確認します。

音声だけを取り出す

ffmpeg -n -i sample.mp4 -map 0:a:0 -vn -c:a copy audio.m4a
ffmpeg -n -i sample.mp4 -map 0:a:0 -vn -c:a libmp3lame -q:a 2 audio.mp3

-vn は映像を入れない指定です。

元の音声が AAC なら、-c:a copy で .m4a にすると、音を作り直さずに取り出せます。

libmp3lameへ変換する例では-q:aの小さい値ほど高品質側の設定です。元の音声より情報が増える処理ではなく、MP3に必要な場合だけ変換します。音声抽出では最初の音声を指定しているため、音声がない入力なら停止します。

小さくする・軽くする

解像度を下げる

ffmpeg -n -i sample.mp4 -map 0:v:0 -map "0:a:0?" -vf scale=-2:480 -c:v libx264 -crf 23 -c:a copy small480.mp4

scale=-2:480 は、高さを480にして、幅は縦横比に合わせて自動で決める(2の倍数にする)指定です。

旧1280×720の入力では854×480になりました。上で生成した640×360を高さ480にすると拡大です。縮小したい場合は元の高さより小さい値を選び、今回の確認では高さ240(426×240)を使用しました。

画質(CRF)を変える

ffmpeg -n -i sample.mp4 -map 0:v:0 -map "0:a:0?" -c:v libx264 -pix_fmt yuv420p -crf 28 -preset medium -c:a copy crf28.mp4
-crf大きさ
186,514,534 バイト
23(初期値)4,599,497 バイト
282,318,130 バイト
12秒の練習用動画(1280×720)での結果

libx264のCRFは、同じ入力・設定なら大きい値ほど低品質側になります。出力容量の削減率は固定ではなく、入力形式・内容・ほかの設定でも変わります。ほかのエンコーダーへ同じ値の意味をそのまま当てはめません。

表の結果では、18→23で約29%、23→28で約50%小さくなり、同じ割合ではありませんでした。

GIFにする

ffmpeg -n -ss 0 -t 3 -i sample.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse" anim.gif

GIF は256色までしか使えないので、palettegen で動画に合った色の表を作り、paletteuse でその色を使います。

パレットを作らない指定(fps=10,scale=480:-1 だけ)と比べると、大きさは次のとおりでした。

方法大きさ(3秒・10fps・幅480)
パレットを作る499,141 バイト
パレットを作らない259,444 バイト

この旧入力ではパレットを作る方法のほうが大きい結果でした。パレットは色の割り当てを決めるもので、作成すれば必ず小さくなる指定ではありません。容量の数字だけで見た目の優劣は判定できません。

fps と幅を下げると、GIF は小さくなります。

つなぐ

# list.txt の中身
file 'cut_enc.mp4'
file 'cut_enc.mp4'
ffmpeg -n -f concat -i list.txt -map 0:v:0 -map "0:a:0?" -c copy joined.mp4

つなぐファイルを list.txt に書き、concat で読み込みます。

4秒の動画を2つつないで、約8秒になりました。

-c copy でつなぐときは、解像度やコーデックなどがそろっている必要があります。

AVI・MP4の結合前に確認する条件とリストの作り方は、ffmpegでAVIとMP4を結合する方法で紹介しています。

音を消す

ffmpeg -n -i sample.mp4 -map 0:v:0 -an -c:v copy mute.mp4

-an は音声を入れない指定で、できたファイルには映像のトラックだけが残りました。

1コマを画像にする(サムネイル)

ffmpeg -n -ss 5 -i sample.mp4 -map 0:v:0 -frames:v 1 thumb.jpg

5秒の位置の1コマを JPEG で書き出しました。

字幕を入れる

字幕の焼き込みと埋め込みは、ffmpegで字幕を焼き込む・埋め込む方法で紹介しています。

出力を確認する・元に戻す

ffprobe -v error -count_frames -show_entries stream=index,codec_type,codec_name,width,height,nb_frames,nb_read_frames,duration:format=duration -of compact cut_enc.mp4

旧入力による2026年10月2日の既存記録では、再エンコードした切り出しは、映像が120コマ・4.000秒でした。

同じ入力の -c copy の切り出しは、記録上212コマ・4.100秒となり、再エンコード版と一致しませんでした。

GIF の例は30コマ、結合の例は240コマ・8.000秒、音声削除の例は音声トラックがないことを確認しました。

変換後の冒頭・末尾・切れ目も再生して確認し、不要な練習用出力だけを削除すれば作業前に戻せます。

Error opening input が出たら入力名と作業フォルダー、Unknown encoder が出たら使用しているビルドの対応コーデックを確認します。

よく使う指定

指定意味
-i ファイル入力
-c copy作り直さずに写す
-c:v / -c:a / -c:s映像・音声・字幕のコーデックを決める
-ss / -to / -t開始位置・終わりの位置・長さ
-vn / -an映像を入れない・音声を入れない
-vf映像のフィルター(縮小・字幕など)
-crf使用エンコーダーの品質設定。libx264では小さい値ほど高品質側
-n既存の出力に上書きせず停止

2026年10月3日の同じ練習入力での確認

上の生成コマンドで12秒・640×360・30fps、H.264 CRF23、AAC 48kHzモノラルの入力を作りました。Windows 11 Pro build26200、Ryzen 5 7530U・RAM約16GB、FFmpeg9.0.2で実行し、入力のSHA-256が処理前後で変わらないことを確認しました。

処理今回の結果
MP4→MKVへコピー1,311,701→1,304,750バイト。デコードした全映像とPCM音声が元と一致
3秒から4秒をコピーで切り出す映像4.100秒・122表示フレーム、音声4.018667秒
同じ区間を再エンコード映像4.000秒・120フレーム、音声4.000秒
AACをM4Aへ抽出/音声削除抽出PCMが元と一致。音声削除後の映像も元と一致
高さ240へ縮小/CRF28426×240は526,014バイト。CRF28は732,348バイト。画質の主観比較は未実施
GIF/JPEGGIFは480×270・30フレーム・3秒。5秒地点のJPEGを生成

コピーの切り出しでは、コンテナに入ったフレーム数とデコーダーが表示するフレーム数が異なる場合があります。今回の122は-count_framesによるnb_read_framesです。旧表の212はコンテナ側の記録を含む値なので、同じ項目として比較しません。

止まった・出力が期待と違うとき

症状確認する項目
コマンドが見つからない導入後に開き直したPowerShellと実行ファイルの場所
Error opening input入力名・作業フォルダー。空白を含むパスを引用符で囲む
Unknown encoder/No such filter実行したビルドのエンコーダーやフィルターの有無
copyで出力形式に入れられないコーデックとコンテナ。互換性が必要なら再エンコードを検討
音声や字幕が減った-mapと出力トラック一覧。最初の音声だけを選ぶ例か確認
-nで止まった/結合出力が短い出力名とログ、必要なファイル、期待した長さと末尾。終了コードだけで完成扱いにしない

今回の9.0.2では、既存出力を-nで拒否した場合にも終了コード0を返しました。元ファイルは不変でしたが、終了コードだけでは新しい出力の作成を確認できません。出力名・更新・長さ・トラックとログを確認してから、冒頭・末尾・音声を再生します。

結合条件はFFmpegでAVI・MP4を結合、fpsの調整はVFRをCFRへ変換、字幕はSRTを焼き込む・埋め込む、関連する編集手順は動画編集の一覧へ進んでください。公式資料確認:2026年10月3日。入力指定・ストリーム選択・シーク、scale・fps・パレット、ffprobeの出力項目。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

動画編集のおすすめ書籍

動画編集PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次