🎬 FFmpeg個人リファレンス

コーデック

コーデック(codec)は、映像や音声を「どんな方式で圧縮するか」を決める仕組みです。 ファイルの拡張子(コンテナ)とは別物で、同じ .mp4 でも中の映像コーデックはH.264だったりH.265だったりします。

代表的なコーデック

種別コーデックFFmpegでの指定名特徴
映像H.264libx264最も互換性が高い定番
映像H.265 (HEVC)libx265同画質で容量が小さい
映像VP9 / AV1libvpx-vp9 / libaom-av1Web向け・高効率
音声AACaacMP4の定番音声
音声MP3libmp3lame互換性重視
音声PCM (無圧縮)pcm_s16leWAV・編集用

今のコーデックを調べる

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 は圧縮にかける手間です(ultrafastveryslow)。遅いほど同じ画質で容量が小さくなります。

再エンコードせずコピーする

コーデックを変えないなら -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 で確認してください。

関連: コンテナ / 動画の変換