この記事でわかること
- 任意の動画形式(AVI, MKV, MOV, WMV など)を MP4 に変換するコマンド
- 映像品質の調整方法(CRF パラメーター)
- 映像を再エンコードせずにコンテナだけ変換する方法(ストリームコピー)
- エンコード速度と品質のトレードオフ(preset)
テスト済みバージョン: FFmpeg 6.1(ubuntu-latest / CI 検証済み) 対象 OS: Windows / macOS / Linux
ファイル名について: この記事では入力ファイルを
input.avi、input.mkvなどの仮ファイル名で記載しています。実際のコマンドでは処理したいファイルのパスに置き換えてください。
前提: コーデックとコンテナの違い
- コンテナ(拡張子):
.mp4,.mkv,.aviなど。映像・音声データの「入れ物」 - コーデック: データの圧縮形式。映像は
H.264 (libx264), 音声はAACが MP4 の標準
MP4 コンテナに入れられる主なコーデックは H.264 または H.265 (HEVC) の映像と AAC の音声です。
基本コマンド
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
| オプション | 意味 |
|---|---|
-i input.avi | 入力ファイルを指定 |
-c:v libx264 | 映像コーデックに H.264 (libx264) を指定 |
-c:a aac | 音声コーデックに AAC を指定 |
output.mp4 | 出力ファイル名(拡張子 .mp4 でコンテナが決まる) |
一次ソース: FFmpeg Wiki - H.264 Encoding Guide
画質の調整(CRF)
-crf で映像品質を指定します。値が小さいほど高品質(ファイルサイズ大)。
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac output.mp4
| CRF 値 | 品質目安 | 用途 |
|---|---|---|
| 18 | 視覚的無損失に近い | アーカイブ |
| 23 | デフォルト。バランス良好 | 一般用途 |
| 28 | 圧縮強め | サイズ優先 |
| 51 | 最低品質 | ほぼ使用しない |
「一般視聴用なら 18〜28 の範囲を推奨」 — FFmpeg H.264 Guide
エンコード速度の調整(preset)
-preset でエンコード速度と圧縮効率のトレードオフを調整します。
ffmpeg -i input.avi -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 128k output.mp4
| preset | 速度 | 圧縮効率 |
|---|---|---|
| ultrafast | 最速 | 低 |
| fast | 速い | やや低 |
| medium | デフォルト | バランス |
| slow | 遅い | 高 |
| veryslow | 最遅 | 最高 |
CRF 一定のとき、遅い preset ほど同品質でファイルサイズが小さくなります。 一次ソース: H.264 Guide - preset
ストリームコピー(再エンコードなし)
入力がすでに H.264/AAC のとき、再エンコードなしでコンテナだけ変換できます。
ffmpeg -i input.mkv -c copy output.mp4
- メリット: 一瞬で完了、画質劣化なし
- 注意点: 入力コーデックが MP4 非対応の場合は失敗します。その場合は
-c:v libx264 -c:a aacに切り替えてください。
音声ビットレートの指定
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -b:a 192k output.mp4
-b:a 値 | 用途 |
|---|---|
| 96k | 音声のみの低品質 |
| 128k | 一般的な動画 |
| 192k | 音楽・音声品質優先 |
| 320k | 最高品質(AAC の上限目安) |
よく使うコマンド例まとめ
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
ffmpeg -i input.mkv -c:v libx264 -crf 22 -preset slow -c:a aac -b:a 192k output.mp4
ffmpeg -i input.mkv -c copy output.mp4
ffmpeg -y -i input.avi -c:v libx264 -crf 23 -c:a aac output.mp4
最後の -y フラグは出力ファイルが既に存在する場合に上書き確認をスキップします(バッチ処理向け)。
トラブルシューティング
Encoder libx264 not found と表示される
原因: インストールした FFmpeg が libx264 を含まないビルド
解決策: 公式サイトまたはパッケージマネージャーから FFmpeg を再インストールしてください。Windows では gyan.dev の Full ビルド を推奨します。
出力ファイルが大きすぎる
CRF 値を上げる(28〜32)か、-preset fast に変更してファイルサイズを削減してください。
ストリームコピーが失敗する
-c copy は入力コーデックが出力コンテナと互換性がある場合のみ動作します。失敗した場合は -c:v libx264 -c:a aac で再エンコードしてください。
一次ソース: FFmpeg H.264 Wiki / FFmpeg AAC Wiki