コーデック
コーデック(codec)は、映像や音声を「どんな方式で圧縮するか」を決める仕組みです。
ファイルの拡張子(コンテナ)とは別物で、同じ .mp4 でも中の映像コーデックはH.264だったりH.265だったりします。
代表的なコーデック
| 種別 | コーデック | FFmpegでの指定名 | 特徴 |
|---|---|---|---|
| 映像 | H.264 | libx264 | 最も互換性が高い定番 |
| 映像 | H.265 (HEVC) | libx265 | 同画質で容量が小さい |
| 映像 | VP9 / AV1 | libvpx-vp9 / libaom-av1 | Web向け・高効率 |
| 音声 | AAC | aac | MP4の定番音声 |
| 音声 | MP3 | libmp3lame | 互換性重視 |
| 音声 | PCM (無圧縮) | pcm_s16le | WAV・編集用 |
今のコーデックを調べる
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1:nk=1 input.mp4
コーデックを指定して変換する
-c:v で映像、-c:a で音声のコーデックを指定します。
# 映像をH.264、音声をAACで再エンコード
ffmpeg -i input.mov -c:v libx264 -c:a aac output.mp4
品質を指定する(CRF)
H.264 / H.265では -crf で品質を指定するのが基本です。数値が小さいほど高画質・大容量になります。
# 品質基準で圧縮(CRF: 数値が小さいほど高画質・大容量。18〜23が目安)
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -preset medium -c:a aac -b:a 192k output.mp4ヒント
-preset は圧縮にかける手間です(ultrafast〜veryslow)。遅いほど同じ画質で容量が小さくなります。再エンコードせずコピーする
コーデックを変えないなら -c copy で無劣化・高速に処理できます。コンテナだけ変えたいときに便利です。
# 再エンコードせずそのままコピー(一瞬で終わる・無劣化)
ffmpeg -i input.mkv -c copy output.mp4
使えるエンコーダを調べる / H.265を使う
# 使えるエンコーダ一覧を表示
ffmpeg -encoders
# H.265(HEVC)で圧縮
ffmpeg -i input.mp4 -c:v libx265 -crf 24 -c:a copy output.mp4注意
H.265やAV1はビルドによって含まれていないことがあります。
ffmpeg -encoders で確認してください。