同じ画質(VMAF)にそろえると、NVENC の H.264・H.265 は CPU 版より実写で −2〜+5%、アニメで 7〜18% 大きいだけでした。AV1 は差が大きく開きます。急ぐなら NVENC、できるだけ小さくしたいなら CPU です。

  • h264_nvenc のファイルは、CPU の libx264(-preset medium)より、実写で 2〜5%、アニメで 11〜18% 大きくなりました。速さは p4 で約 2.8 倍、p7 で約 1.8 倍です。
  • hevc_nvenc と libx265 の差は、実写で −2〜+4%、アニメで 7〜14% でした。速さは 2.5〜6 倍です。
  • av1_nvenc だけは差がはっきり出て、SVT-AV1(preset 8)より実写で 7〜24%、アニメで 40〜72% 大きくなりました。

H.264・H.265・AV1 のそれぞれで、CPU エンコーダと NVENC(p4)の出力サイズと VMAF の関係を示した実測グラフ。H.264 と H.265 では曲線がほぼ重なる

同じ画質での大きさ

同じコーデックの CPU エンコーダより、NVENC のファイルが何 % 大きいか。

NVENC の設定 比べた CPU エンコーダ 実写 アニメ
h264_nvenc p4 libx264 medium +3〜+5% +11〜+18%
h264_nvenc p7 libx264 medium +2〜+3% +12%
hevc_nvenc p4 libx265 medium +1〜+4% +12〜+14%
hevc_nvenc p7 libx265 medium −2〜+1% +7〜+9%
av1_nvenc p4 SVT-AV1 preset 8 +9〜+24% +45〜+72%
av1_nvenc p7 SVT-AV1 preset 8 +7〜+22% +40〜+69%

速さ

エンコーダと設定 品質の設定 速さ(fps) 同じコーデックの CPU との比
libx264 medium CRF 24 156 —
h264_nvenc p4 CQ 31 434 2.8 倍
h264_nvenc p7 CQ 31 279 1.8 倍
libx265 medium CRF 26 66 —
hevc_nvenc p4 CQ 33 417 6.3 倍
hevc_nvenc p7 CQ 33 166 2.5 倍
SVT-AV1 preset 8 CRF 40 161 —
av1_nvenc p4 CQ 40 440 2.7 倍
av1_nvenc p7 CQ 40 301 1.9 倍

速さは画質をそろえず、表の設定 1 つずつで測りました。

p4 と p7 の違い

既定は p4 です。p7 は p4 より 1.5〜2.5 倍遅く、同じ画質での大きさは H.265 で 2〜6% 小さくなる程度です(H.264・AV1 ではほぼ同じ)。

CQ と CRF の対応

同じ VMAF(約 93)になる設定です(測った 2 点から補間して丸めた値)。

エンコーダ 実写 アニメ
libx264 medium(CRF) 25 23
h264_nvenc p4(CQ) 30 26
libx265 medium(CRF) 26 25
hevc_nvenc p4(CQ) 31 28
SVT-AV1 preset 8(CRF) 36 39
av1_nvenc p4(CQ) 38 34

CRF 23 の感覚で -cq 23 にすると、必要以上に大きなファイルになります。

どれを選ぶか

  • どこでも再生できる H.264 が必要で、急ぐとき: h264_nvenc(p4)。約 2.8 倍速く、ファイルは実写なら数 % 大きいだけです。
  • 相手が H.265 を再生できるとき: hevc_nvenc(p7)。libx264 と同じくらいの速さ(166 fps と 156 fps)で、同じ画質のファイルが約 2〜3 割小さくなりました。
  • できるだけ小さくしたく、時間をかけられるとき: SVT-AV1(preset 4〜6)。SVT-AV1 の preset ごとの大きさと速さは AV1 エンコードの記事にあります。
  • AV1 で急ぐとき: av1_nvenc は速い(440 fps)ですが、SVT-AV1 の preset 8(161 fps)より大きくなります。

コマンド

上の表の実写の値(VMAF 約 93)を入れた例です。

# H.264(CPU)
ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 25 -c:a copy output_x264.mp4

# H.265(CPU)
ffmpeg -i input.mp4 -c:v libx265 -preset medium -crf 26 -tag:v hvc1 -c:a copy output_x265.mp4

NVENC は -rc vbr -cq N -b:v 0 で、ビットレートを決めずに画質(CQ)で制御します。

# H.264(NVENC)
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p4 -tune hq -rc vbr -cq 30 -b:v 0 -c:a copy output_nvenc.mp4

# H.265(NVENC)。Apple の端末で開くなら -tag:v hvc1 を付ける
ffmpeg -i input.mp4 -c:v hevc_nvenc -preset p7 -tune hq -rc vbr -cq 31 -b:v 0 -tag:v hvc1 -c:a copy output_hevc_nvenc.mp4

# AV1(NVENC、RTX 40 シリーズ以降)
ffmpeg -i input.mp4 -c:v av1_nvenc -preset p4 -tune hq -rc vbr -cq 38 -b:v 0 -c:a copy output_av1_nvenc.mp4

基本の使い方とエラーの直し方は NVENC の記事を見てください。

自分の素材で比べる

エンコードしたファイルと元のファイルの VMAF は次のコマンドで出せます(libvmaf 入りの FFmpeg が必要)。

ffmpeg -i output.mp4 -i input.mp4 -lavfi "[0:v]setpts=PTS-STARTPTS[d];[1:v]setpts=PTS-STARTPTS[r];[d][r]libvmaf" -f null -

設定を 2〜3 段階変え、同じくらいの点数のファイルの大きさを比べます。

RTX 4090・Core i9-14900KF・FFmpeg 8.1(gyan.dev full)で測定(2026-10-07)。素材は Tears of Steel(実写、24fps)と Big Buck Bunny(CG アニメ、30fps)の各 10 秒・1080p(© Blender Foundation、CC BY 3.0)。品質の設定を 5〜7 段階変えて VMAF(libvmaf 既定モデル)を測り、同じ VMAF の大きさを対数補間で比べた(VMAF 84〜94、映像のみ)。速さは 60 秒の実写を各 3 回の中央値。GPU の世代や素材が違えば結果も変わります。NVENC は -tune hq -rc vbr 以外は既定、CPU は medium / preset 8 のみ。速さは入力を CPU でデコードした値。VMAF 95 付近では差が縮み、AV1 の実写では NVENC が小さい点もあります。測定値はデータのページ。