


PCパーツ・ガジェット専門
自作PCパーツやガジェットの最新情報を発信中。実測データに基づいた公平なランキングをお届けします。
HandBrakeのエンコード設定を徹底解説。H.265(HEVC)、AV1、ハードウェアエンコード、品質設定、バッチ処理の最適化を紹介。
ImageMagickを使ったバッチ画像処理の方法を解説。一括変換、リサイズ、ウォーターマーク、WebP変換、最適化のコマンドを紹介。
Kdenliveを使った動画編集の方法を解説。タイムライン編集、エフェクト、トランジション、カラーグレーディング、書出し設定を紹介。
Shotcutを使った動画編集の入門ガイド。インストールからカット編集、テロップ、エフェクト、書出しまで初心者向けに解説。
HEVC(H.265)とAV1のハードウェアエンコードをNVENC第8世代・AMD VCN 5・Intel QSVでGPU別に徹底解説。同ビットレートでの画質VMAF比較、エンコード速度実測表、OBS/HandBrake/DaVinci Resolve設定ガイドと配信プラットフォーム別推奨。これ一本で全てわか
動画編集や配信、アーカイブ作成において、もはや欠かせない存在となったのが「FFmpeg」です。FFmpegは、あらゆる形式の動画・音声データを変換、ストリーム、編集できる、オープンソースの強力なマルチメディアフレームワークです。コマンドライン(CUI)で操作するため、一見すると難解に感じられるかもしれませんが、一度基本の構මින්(構文)をマスターしてしまえば、GUI(グラフィカルな操作画面)のソフトでは不可能な、高度かつ超高速な一括処理が可能になります。
2026年現在、動画フォーマットの主流はH.264から、より圧縮効率の高いH.265 (HEVC) や、次世代の標準となりつつあるAV1へと急速にシフトしています。また、YouTube LiveやTwitchといったプラットフォームでの低遅延ストリーミング技術も進化しており、FFmpegの役割はますます重要になっています。本記事では、FFmpeg 7.x系に対応した最新のコマンドリファレンスとして、初心者から上級者まで使える「実践レシピ」を網羅的に解説します。
本稿では、単なるコマンドの羅列に留まらず、なぜそのオプションが必要なのか、GPU加速(ハードウェアエンコード)を利用することでどれほど処理時間が短縮されるのか、といった具体的な数値や実例を交えて解説します。動画変換、音声抽出、字幕の焼き込み、さらにはスクリプトによる自動化まで、エンジニアや動画クリエイターが現場で即座に使える情報をお届けします。
FFmpegを使いこなすための第一歩は、コマンドの基本構造を理解することです。FFmpegのコマンドは、基本的に「入力の指定」「処理の指示」「出力の指定」という3つのパーツで構成されています。これらが正しく並んでいないと、意図しない動作やエラーの原因となります。
基本となる構文は以下の通りです。
ffmpeg [グローバルオプション] [入力オプション] -i [入力ファイル] [出力オプション] [出力ファイル]
ここで重要なのが「オプションを置く場所」です。-i(入力ファイル)よりも前に書いたオプションは「入力ファイルに対して適用される設定」になり、-iの後に書いたオプションは「出力ファイルに対して適用される設定」になります。例えば、入力動画の解像度を読み込む際に変換したいのか、それとも変換後のファイルに適用したいのかによって、記述場所が決定的に異なりますなると覚えておきましょう。
以下に、頻出する主要なオプションをまとめました。
| オプション | 名称 | 説明 |
|---|---|---|
-i | Input | 入力ファイルを指定する。複数の -i を使うことで複数ファイルを扱える。 |
-c:v | Video Codec | ビデオコーデックを指定(例: libx264, libx265, av1_enc)。 |
-c:a | Audio Codec | オーディオコーデックを指定(例: aac, libmp3lame, opus)。 |
-b:v | Video Bitrate | ビデオのビットレートを指定。画質とファイルサイズに直結する。 |
-crf | Constant Rate Factor | 固定品質モード。数値が低いほど高品質(0-51 は一般的、23前後が推奨)。 |
-vf | Video Filter | ビデオフィルター(リサイズ、クロップ、色調補完など)を指定。 |
-af | Audio Filter | オーディオフィルター(音量調整、ノイズ除去など)を指定。 |
-ss | Seek (Start) | 開始時間を指定。入力前(-iの前)に置くと高速、後に置くと正確。 |
-t | Duration | 処理する継続時間を指定。 |
-an | Audio None | 音声ストリームを除去する。 |
-vn | Video None | ビデオストリームを除去する。 |
特に「CRF(Constant Rate Factor)」は、現代のエンコードにおいて極めて重要です。これは「ビットレートを固定する」のではなく、「画質を一定に保つために、複雑なシーンではビットレートを上げ、単純なシーンでは下げる」という賢い仕組みです。H.264であれば23、H.265であれば28程度を目安に設定することで、見た目の劣化を最小限に抑えつつ、ファイルサイズを劇的に軽量化できます。
動画の変換において、最も需要が高いのが「ファイルサイズの削減」と「互換性の確保」です。2026年現在、H.264は依然として再生互換性が高いものの、ストレージ容量を圧迫します。そこで、H.2エ5(HEVC)や、GoogleやNetflixも推進するAV1への変換が推奨されます。
H.265への変換は、H.264と同じ画質を維持したまま、ファイルサイズを約50%削減できる可能性があります。以下のコマンドは、CRF 28を使用して高品質なH.265動画を作成する例です。
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a aac -b:a 128k output_hevc.mp4
ここで -c:v libx265 はソフトウェアエンコーダー(CPU)を使用することを意味します。CPU処理は非常に時間がかかりますが、圧縮効率(画質あたりのサイズ)は最高レベルです。
AV1は、H.265よりもさらに高い圧縮率を誇るオープンな規格です。ただし、エンコードには膨大な計算量が必要です。
ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 0 -c:a opus output_av1.mkv
AV1のエンコードを行う際は、-b:v 0(ビットレート指定なし)と -crf を組み合わせて使用するのが一般的です。AV1は最新のハードウェア(RTX 40シリーズ以降や最新のスマートフォン)であれば再生可能ですが、古いデバイスでは再生できない可能性がある点に注意してください。
変換に際して、どのコーデックを選ぶべきかの判断基準となる比較表を以下に示します。
| コーデック | 圧縮効率 | エンコード速度 | 再生互換性 | 推奨用途 |
|---|---|---|---|---|
| H.264 (AVC) | 低〜中 | 極めて高速 | 非常に高い | Webアップロード、古いデバイス用 |
| H.265 (HEVC) | 高 | 低速 | 高い | 4K HDR動画、ストレージ節約 |
| AV1 | 極めて高い | 非常に低速 | 中(最新のみ) | 次世代のアーカイブ、高圧縮配信 |
| VP9 | 高 | 中速 | 高い | YouTubeの標準的なストリーミング |
動画ファイルから音声だけを取り出したい、あるいは音質を劣化させずに保存したいというケースは多々あります。FFmpegを使えば、動画から音声ストリームをコピーするだけで済むため、再エンコードによる劣化なし(Lossless)の抽出が可能です。
もし、元の動画の音声がすでにAACやMP3であれば、再エンコード(変換)せずに「ストリームをコピー」するだけで抽出できます。これはCPU負荷がほぼゼロで、一瞬で完了します。
ffmpeg -i input.mp4 -vn -c:a copy output_audio.m4a
-vn はビデオの除去、-c:a copy は音声コーデックをそのままコピーすることを意味します。
音楽制作や高音質なアーカイブを目的とする場合は、無損失のFLACや、最新の低ビットレート高音質規格であるOpUID(Opus)への変換が有効です。
FLAC(無損失)への変換:
ffmpeg -i input.mp4 -vn -c:a flac output_audio.flac
Opus(次世代高圧縮)への変換:
ffmpeg -i input.mp4 -vn -c:a libopus -b:a 128k output_audio.opus
Opusは、低ビットレートでも非常に透明感のある音質を実現できるため、Web配信やモバイル通信環境での利用に最適です。
用途に応じた音声フォーマットの特性をまとめました。
| フォーマット | 種類 | メリット | デメリット |
|---|---|---|---|
| MP3 | 非可逆 | ほぼ全てのデバイスで再生可能 | 高ビットレートでファイルが大きくなる |
| AAC | 非可逆 | MP3より高効率、YouTubeの標準 | 非常に古いデバイスでは非対応の場合がある |
| FLAC | 無損失 | 音質が一切劣化しない | ファイルサイズが非常に大きくなる |
| Opus | 非可逆 | 低ビットレートでも極めて高音質 | 互換性がまだ発展途上(最新環境向け) |
動画編集の基本となる「結合」と「カット」は、FFmpegの最も得意とする分野です。特に「再エンコードなし」で処理を行う手法を知っておくと、作業時間を劇的に短縮できます。
特定の範囲だけを切り出したい場合、-ss(開始時間)と-t(継続時間)または-to(終了時間)を使用します。
ffmpeg -i input.mprypt -ss 00:01:30 -to 00:02:00 -c:v copy -c:a copy output_cut.mp4
ここで重要なテクニックは、-ssを-iの前に置くことです。-iの前に置くと、FFmpegは指定された時間までシーク(スキップ)するため、処理が非常に高速になります。逆に、-iの後に置くと、フレーム単位で正確に時間を計算しますが、処理は遅くなります。また、-c:v copy(コピーモード)を使用することで、映像を再計算せずに切り出せるため、画質劣化が一切ありません。
複数の動画ファイルを一つに繋げるには、concat demuxer という機能を使います。まず、結合したいファイルリストをテキストファイル(例: list.txt)として作成します。
list.txtの内容:
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
その後、以下のコマンドを実行します。
ffmpeg -f concat -safe 0 -i list.txt -c copy output_merged.mp4
この方法のメリットは、全ての動画が同じ解像度・コーデックであれば、再エンコードなしで「一瞬」で結合が終わることです。もし、解像度が異なる動画を結合したい場合は、-filter_complex を使用してリサイズしながら結合する必要があります(後述のフィルターセクションを参照)。
動画に字幕を「表示するだけ(ソフトサブ)」ではなく、映像そのものに「書き込む(ハードサブ)」必要がある場合、FFmpegのフィルター機能が威力を発揮します。
SRT形式やASS形式の字幕ファイルを映像に合成します。
ffmpeg -i input.mp4 -vf "subtitles=subs.srt" output_with_subs.mp4
ASS形式(アニメなどで使われる装飾豊かな字幕)を使用する場合も、基本は同じです。この処理には再エンコードが必要になるため、CPU負荷がかかります。
動画のサイズを変更したり、不要な部分を切り取ったり(クロップ)、インターレースノイズを除去したりするレシピです。
リサイズとクロップの同時実行:
ffmpeg -i input.mp4 -vf "scale=1280:720,crop=640:640" output_resized.mp4
(1280x720にリサイズした後、中央を640x640で切り抜く)
インターレース解除(Deinterlace):
古いビデオカメラの映像などで発生する横縞ノイズを除去します。
ffmpeg -i input.mp4 -vf "yadif" output_deinterlaced.mp4
ノイズ除去(Denoise):
暗い場所で撮影したザラザラした映像を滑らかにします。
ffmpeg -i input.mp4 -vf "hqdn3d" output_denoised.mp4
スローモーション・倍速再生:
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output_fast.mp4 (2倍速)
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" output_slow.mp4 (0.5倍速)
これらのフィルターは、filter_complex を使うことで、複数の入力を複雑に組み合わせることも可能です。例えば、「2つの動画を並べて表示する(Side-by-Side)」といった処理も、高度なスクリプトで自動化できます。
動画の一部をGIFとして書き出したい場合、単純な変換では「色がガタガタ」になり、非常に画質が悪くなります。FFmpegでは、まず「パレット(色のリスト)」を生成し、それを使用してエンコードすることで、フルカラーに近い高品質なGIFを作成できます。
ステップ1:最適なパレットの生成
動画内の色の出現頻度を解析し、GIFに最適な256色を選び出した「パターファイル」を作成します。
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1,palettegen" palette.png
ステップ2:パレットを使用してGIF化
作成した palette.png を適用して、GIFを書き出します。
ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
このプロセスにより、色の階調が非常に滑らかで、WebサイトやSNSでも映える美しいGIFが完成します。fps(フレームレート)を低めに設定することで、ファイルサイズを抑えることも可能です。
2026年の動画編集環境において、CPUだけでエンコードを行うのは、巨大なファイルに対しては非効率です。NVIDIA、Intel、AMDのGPU(グラフィックス・プロセッサ)を活用したハードウェアエンコード(Hardware Acceleration)を利用することで、処理時間を数分の一に短縮できます。
NVIDIAのグラフィックボードを使用している場合、h264_nvenc や hevc_nvenc を使用します。
ffmpeg -i input.mp4 -c:v h264_nvenc -preset slow -cq 25 output_nvenc.mp4
-preset には fast, medium, slow などが指定可能です。slow にするほど圧縮効率が上がりますが、-cq(定常品質)を適切に設定することが重要です。
IntelのQuick Sync Video (QSV) を利用する方法です。
ffmpeg -i input.mp4 -c:v h264_qsv -global_quality 25 output_qsv.mp4
Linux環境やAMDのGPUを使用している場合、VAAPI(Video Acceleration API)が一般的です。
ffmpeg -vaapi_device /dev/dri/renderD128 -i input.mprypt -vf 'format=nv12,hwupload' -c:v h264_vaapi output_vaapi.mp4
どのエンコーダーを使うべきか、その特性をまとめました。
| エンコーダー名 | 使用ハードウェア | メリット | デメリット |
|---|---|---|---|
| libx264 / libx265 | CPU (Software) | 最高画質、圧縮率が非常に高い | 処理が非常に遅い |
| h264_nvenc | NVIDIA GPU | 圧倒的なエンコード速度 | GPUの負荷が高まる、圧縮率はCPUに劣る |
| h264_qsv | Intel CPU/GPU | 低消費電力、高速、内蔵GPUで動作 | 高度な設定にはIntelのドライバ依存がある |
| h264_vaapi | AMD / Linux | オープン標準、Linuxとの親和性 | 設定がやや複雑(Linux特有の記述が必要) |
FFmpegの真価は、大量のファイルを一括で処理する際に発揮されます。手動で一つずつコマンドを打つのではなく、WindowsのPowerShellやLinux/macOSのBashスクリプトを作成して自動化しましょう。
フォルダ内のすべての .mp4 ファイルを、H.265形式の .mp4 に変換するスクリプトの例です。
## フォルダ内の全mp4を対象にループ
Get-ChildItem *.mp4 | ForEach-Object {
$outputName = $_.BaseName + "_hevc.mp4"
ffmpeg -i $_.Name -c:v libx265 -crf 28 -c:a aac $outputName
}
Linux環境での一括処理も同様に簡単です。
#!/bin/bash
## 拡張子 .mov を .mp4 に一括変換
for f in *.mov; do
ffmpeg -i "$f" -c:v libx264 -crf 23 -c:a aac "${f%.mov}.mp4"
done
このように、スクリプト化しておくことで、毎日のルーチンワーク(素材の整理、バックアップ用の圧縮など)を完全に自動化できます。
A: 主な原因は、入力ファイルの破損、メモリ不足、またはディスク容量不足です。 まずは、エラーメッセージの最後の数行を確認してください。「No space left on device」とあればディスク容量不足です。「Segmentation fault」はメモリ不足やドライバの不具合が疑われます。また、非常に高解像度(8Kなど)を処理している場合は、一時的なファイル作成領域が足りているかも確認してください。
-ss オプションを -i の前に置くのと後に置くのと、どちらが良いですか?A: 高速化を優先するなら「前」、正確な切り出しを優先するなら「後」です。
-i の前に置くと、FFmpegは指定したタイムスタンプまで動画をスキップ(Seek)するため、非常に高速です。しかし、キーフレーム(映像の主要な基準点)の関係で、指定した時間よりわずかに前後することがあります。フレーム単位の正確なカットが必要な場合は、-i の後に記述してください。
A: H.265 (HEVC) または AV1 コーデックへの変換と、CRF値の調整が最も効果的です。
H.264からH.265へ変換し、-crf 28 前後を指定することで、見た目の画質を維持したままサイズを大幅に削減できます。また、ビットレートを固定するのではなく、CRF(定常品質)モードを使用することで、複雑なシーンにはビットを割り当て、単純なシーンでは節約するという効率的なエンコードが可能になります。
A: 字幕が「ソフトサブ」として埋め込まれているのか、「ハードサブ」として焼き込まれているのかを確認してください。
再生プレイヤーが字幕に対応していない場合、-vf "subtitles=filename.srt" を使用して、映像そのものに字幕を書き込む(ハードサブ化)必要があります。この際、-c:v copy を使っていると字幕は書き込まれません。必ず再エンコード(-c:v libx264 など)を行う設定にしてください。
A: 従来のCPUエンコードと比較すると、同じビットレートでは画質が低下する傾向にあります。 GPUエンコーダーは「速度」に特化して設計されているため、複雑な動きのシーンにおいて、CPU(libx264/libx265)ほどの精密な圧縮が困難な場合があります。画質を最優先するならCPU、配信や作業のスピードを最優先するならGPU、という使い分けが推奨されます。
A: -vf scale フィルターを使用します。
例えば、縦横比を維持したまま横幅を1280ピクセルにしたい場合は、scale=1280:-1 と記述します。-1 を指定することで、高さの比率を自動的に計算してくれます。アスペクト比を強制的に指定したい場合は scale=1280:720 のように数値を直接入力します。
A: -vn オプションと -c:a copy を使用してください。
ffmpeg -i input.mp4 -vn -c:a copy output.m4a のように入力します。-vn は「ビデオなし(Video None)」、-c:a copy は「音声コーデックをそのままコピー」を意味します。再エンコードを行わないため、一瞬で完了し、音質も劣化しません。
A: concat demuxer(リスト形式)では、解像度が一致している必要があります。
解像度が異なる動画を結合する場合、単純なコピーはできません。-filter_complex を使い、すべての動画を一度同じ解像度にリサイズしてから結合する処理を記述する必要があります。少し複雑なコマンドになりますが、FFmpegなら可能です。
FFmpegは、一見すると難解なコマンドの集まりですが、その本質は「動画・音声のあらゆる操作を自在に操るための強力なツールセット」です。本記事で紹介した内容を振り返り、日々のワークフローに役立ててください。
本記事の重要ポイント:
-i の前に置くか後に置くかで、処理内容(入力設定か出力設定か)が大きく変わる。-vf を通じて自由自在に実行可能。FFmpegの学習に終わりはありません。コマンド一つひとつのオプションを、実際に自分の手元の動画で試しながら、自分だけの「最強のレシピ集」を作り上げていってください。