Burnersen
29th August 2026, 23:48
Hi everyone,
I built a batch encoder for my own video library over the last
few months. In its current state, it handles about 99% of my
encoding work to my full satisfaction, so I thought it might
be useful to others here as well.
NVENCForge is a free, source-available Windows batch encoder
built around FFmpeg and NVENC. The CLI executable handles the actual
encoding, but I recommend using the GUI (NVENCForgeGUI) for daily
use. It makes batch queues, watched folders, audio track selection,
and profiles a lot easier than typing CLI flags.
Why another encoder?
Every batch tool I tried forced me to set a single fixed CQ or CRF
value for an entire folder. That number is always wrong somewhere:
too generous for simple material, too tight for complex scenes.
NVENCForge measures quality per file instead of guessing. Each video
gets a quick analysis first to find the cheapest CQ that still hits
the quality target (default: VMAF 97, tolerance 0.5). On a normal
movie, this check takes under a minute.
How Auto-CQ works:
Reads the bitrate profile from the container without decoding
to place three 8-second sample windows on demanding scenes.
Encodes those samples at two anchor CQ values and scores them
with libvmaf against the source using identical filter chains and fps.
Derives the target CQ and runs one more quick encode to confirm it.
Detects quality saturation on pre-compressed sources (steps down
to cheaper CQs) and sets a spending cap on grainy video (default:
max 45% of source bitrate).
Testing showed window length matters more than window count:
3x8s windows gave identical CQ picks as 4x8s while cutting analysis
time by 22-32%.
Main features:
Probes files first: skips or remuxes videos that are already
efficient. Per-file bitrate caps keep re-encodes smaller than the source.
GPU pipeline: NVDEC decoding and CUDA Lanczos scaling (files over
50 Mbit/s automatically process on CPU).
Passes through HDR10 and HLG color tags plus static mastering metadata.
Auto-crop for letterboxed material, with a `-cropcheck` preview mode.
Supports H.265 (default), AV1 (`av1_nvenc` on RTX 40+), MP4 and 8-bit
compatibility modes, and a `-cpu` mode (libx265 / SVT-AV1).
DaVinci Resolve helper: stream-copies video while converting
unsupported audio (DTS, TrueHD, etc.) to AAC and cleaning subtitles.
Includes 1:1 lossless split and join queues.
Validates outputs before moving originals to an `originals/` folder.
Interrupted encodes leave a playable `.preview.mkv` file.
The GUI & Getting Started
To get started, simply download the latest release of NVENCForgeGUI
and launch it. In the top right corner, click "NVENCForge - check github...".
This will automatically download the latest NVENCForge engine, initialize
all required config files, and set up the tools folder next to the executable.
The GUI supports drag and drop, up to 3 parallel jobs, live progress
(speed, ETA, projected output size), and folder watching. It also has
a visual track chooser, auto-generated config docs, and profile support.
It does not encode anything itself - it drives the CLI executable
via a JSON event stream.
Requirements:
Windows 10/11 x64. NVIDIA GPU (Pascal or newer for HEVC 10-bit, RTX 40+
for AV1). CPU mode and lossless tools work on any machine.
Known limitations:
Sampled VMAF on short windows is an estimate for the full file
and inherits standard VMAF blind spots (such as color banding).
NVENC `p5` matches `libx265 fast` in quality per byte at 4x speed,
but a slow x265 preset will pull ahead in compression efficiency
(~1 VMAF gain for triple the render time).
Windows-only, unsigned binary (SmartScreen warnings will appear).
PolyForm Noncommercial 1.0.0 license: free to use for personal
and non-commercial purposes (source available, no commercial resale).
Links:
GUI: https://github.com/burnersen/NVENCForgeGUI
CLI Engine: https://github.com/burnersen/NVENCForge
I would be very interested in your thoughts on the measurement logic:
Is 3 windows of 8 seconds a defensible sample size for a two-hour film,
or do you have material where scene placement like this misses hard scenes?
I don't check in here every day, but I do try to reply within a
reasonable time.
Cheers,
burnersen
I built a batch encoder for my own video library over the last
few months. In its current state, it handles about 99% of my
encoding work to my full satisfaction, so I thought it might
be useful to others here as well.
NVENCForge is a free, source-available Windows batch encoder
built around FFmpeg and NVENC. The CLI executable handles the actual
encoding, but I recommend using the GUI (NVENCForgeGUI) for daily
use. It makes batch queues, watched folders, audio track selection,
and profiles a lot easier than typing CLI flags.
Why another encoder?
Every batch tool I tried forced me to set a single fixed CQ or CRF
value for an entire folder. That number is always wrong somewhere:
too generous for simple material, too tight for complex scenes.
NVENCForge measures quality per file instead of guessing. Each video
gets a quick analysis first to find the cheapest CQ that still hits
the quality target (default: VMAF 97, tolerance 0.5). On a normal
movie, this check takes under a minute.
How Auto-CQ works:
Reads the bitrate profile from the container without decoding
to place three 8-second sample windows on demanding scenes.
Encodes those samples at two anchor CQ values and scores them
with libvmaf against the source using identical filter chains and fps.
Derives the target CQ and runs one more quick encode to confirm it.
Detects quality saturation on pre-compressed sources (steps down
to cheaper CQs) and sets a spending cap on grainy video (default:
max 45% of source bitrate).
Testing showed window length matters more than window count:
3x8s windows gave identical CQ picks as 4x8s while cutting analysis
time by 22-32%.
Main features:
Probes files first: skips or remuxes videos that are already
efficient. Per-file bitrate caps keep re-encodes smaller than the source.
GPU pipeline: NVDEC decoding and CUDA Lanczos scaling (files over
50 Mbit/s automatically process on CPU).
Passes through HDR10 and HLG color tags plus static mastering metadata.
Auto-crop for letterboxed material, with a `-cropcheck` preview mode.
Supports H.265 (default), AV1 (`av1_nvenc` on RTX 40+), MP4 and 8-bit
compatibility modes, and a `-cpu` mode (libx265 / SVT-AV1).
DaVinci Resolve helper: stream-copies video while converting
unsupported audio (DTS, TrueHD, etc.) to AAC and cleaning subtitles.
Includes 1:1 lossless split and join queues.
Validates outputs before moving originals to an `originals/` folder.
Interrupted encodes leave a playable `.preview.mkv` file.
The GUI & Getting Started
To get started, simply download the latest release of NVENCForgeGUI
and launch it. In the top right corner, click "NVENCForge - check github...".
This will automatically download the latest NVENCForge engine, initialize
all required config files, and set up the tools folder next to the executable.
The GUI supports drag and drop, up to 3 parallel jobs, live progress
(speed, ETA, projected output size), and folder watching. It also has
a visual track chooser, auto-generated config docs, and profile support.
It does not encode anything itself - it drives the CLI executable
via a JSON event stream.
Requirements:
Windows 10/11 x64. NVIDIA GPU (Pascal or newer for HEVC 10-bit, RTX 40+
for AV1). CPU mode and lossless tools work on any machine.
Known limitations:
Sampled VMAF on short windows is an estimate for the full file
and inherits standard VMAF blind spots (such as color banding).
NVENC `p5` matches `libx265 fast` in quality per byte at 4x speed,
but a slow x265 preset will pull ahead in compression efficiency
(~1 VMAF gain for triple the render time).
Windows-only, unsigned binary (SmartScreen warnings will appear).
PolyForm Noncommercial 1.0.0 license: free to use for personal
and non-commercial purposes (source available, no commercial resale).
Links:
GUI: https://github.com/burnersen/NVENCForgeGUI
CLI Engine: https://github.com/burnersen/NVENCForge
I would be very interested in your thoughts on the measurement logic:
Is 3 windows of 8 seconds a defensible sample size for a two-hour film,
or do you have material where scene placement like this misses hard scenes?
I don't check in here every day, but I do try to reply within a
reasonable time.
Cheers,
burnersen