Expected Performance - Proryanator/encoder-benchmark GitHub Wiki

Expected Performance on Various Encoding Hardware

H264/HEVC NVENC

Presets & Tunes

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.

Profiles

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:


Expected Performance

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.

Minimum Spec'd PC

(No affiliate links in here, just for reference)

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

AV1 on Intel Arc

Presets

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.

Profiles

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.

Async Depth

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.


Expected Performance

Minimum Spec'd PC w/ AV1 Intel Arc GPU

(No affiliate links in here, just for reference)

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
⚠️ **GitHub.com Fallback** ⚠️