同じ画質(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% 大きくなりました。
同じ画質での大きさ
同じコーデックの 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 が小さい点もあります。測定値はデータのページ。