Expected Performance - Proryanator/encoder-benchmark GitHub Wiki
Only the latest presets, i.e. [p1-p7]
are being used, along with the following tunes: [ll, ull, hq]
when testing
encoder permutations. All other legacy presets end up mapping to a combination of the mentioned presets/tunes and just
adds extra computation time.
The use of the lossless
tune or lossless
preset effectively ignores the bitrate that you set, so these are not
included in permutations, since we're focused on specific/replicable bitrate targets with vmaf scores.
It was determined that use of any other profile than high
did not improve results; i.e. either lowered the vmaf score,
or did not increase the average fps. Thus, the tool is sticking to using 'high' for H264, and 'main' for HEVC.
Documentation used for decisions made when using this codec:
While building this tool, the author used specific GPU's for validation. Along the way, he was able to find the maximum limit of the hardware he has available to him, as well as minimum bitrates needed to achieve visually lossless results.
Hopefully performance details listed below will help you identify where your specific hardware lies relative to the author's own system.
(No affiliate links in here, just for reference)
- CPU: Intel i5-8400 (6 cores/6 threads)
- RAM: 16GB of G.Skill Ripjaws V DDR4 3200Mhz
- GPU: Asus GTX 1660 Super
- NVME SSD: PNY250GB NVMe PCI Gen3 x4
- NVENC Arch & Gen: Turing, 7th Gen
- Nvidia Driver: 527.56
The following are the minimum bitrates you'd need to achieve visually lossless results on the above Turing GPU.
Note: HEVC is a more efficient compression algorithm, but it does not appear to affect the real-time bitrate that much. Use of either H264 or HEVC might come down to the max fps produced between the two.
NVENC H264: 720@60 -> 10Mb/s
NVENC HEVC: 720@60 -> 5-10Mb/s
NVENC H264: 720@120 -> 20Mb/s
NVENC HEVC: 720@120 -> 15-20Mb/s
NVENC H264: 1080@60 -> 20Mb/s
NVENC HEVC: 1080@60 -> 15-20Mb/s
NVENC H264: 1080@120 -> 40Mb/s
NVENC HEVC: 1080@120 -> 35-40Mb/s
NVENC H264: 2K@60 -> 30Mb/s
NVENC HEVC: 2K@60 -> 20-25Mb/s
NVENC H264: 2K@120 -> 50-55Mb/s
NVENC HEVC: 2K@120 -> 50Mb/s
NVENC H264: 4K@60 -> 50Mb/s
NVENC HEVC: 4K@60 -> 40-45Mb/s
// Note: Turing GPU on minimum spec'd PC could not get any higher than 4K@75-90 average fps
// however on a 3080ti with a stronger CPU, we could get 4k@120 with 100Mb/s
NVENC H264: 4K@120 -> 100Mb/s
NVENC HEVC: 4K@120 -> 90-100Mb/s
Presets of veryfast, faster, fast, medium, slow, slower, veryslow
are used in the tool. There may be varying degrees
of quality increases from veryfast
to veryslow
, albeit with a maximum fps performance hit.
Noticed not very much of a VMAF score increase between presets, between veryfast
and veryslow
there's ~2 points of a
difference. It's recommended to stream using veryfast
to get the most fps at relatively the same VMAF score.
There were 2 profiles provided in the version of ffmpeg used by this tool: main
and unknown
. unknown
is most
likely a placeholder and produces similar results to main
, so the tools will only use main
.
This has to do with parallelism, and ffmpeg defaults to this being set to 4
. Any lower and you start to see pretty
decent fps drops for realtime encoding performance. Any higher than 4
(tested up to 8
) there is negligible fps
performance, gaining ~2fps or so in 1% lows.
(No affiliate links in here, just for reference)
- CPU: Intel i5-8400 (6 cores/6 threads)
- RAM: 16GB of G.Skill Ripjaws V DDR4 3200Mhz
- GPU: Asus GTX 1660 Super
- NVME SSD: PNY250GB NVMe PCI Gen3 x4
- Intel Arc GPU: ASRock Challenger A380 6GB
- Intel Arc Driver: 31.0.101.4255
Note: ranges of bitrates imply that vmaf scores were 93 or so on the lower bitrate, and achieved 95 on the upper bitrate.
720@60 -> 5Mb/s
720@120 -> 15-20Mb/s
1080@60 -> 15-20Mb/s
1080@120 -> 35-40Mb/s
2k@60 -> 25Mb/s
2k@120 -> 50Mb/s
4k@60 -> 40-45Mb/s
4k@120 -> 100Mb/s