--- Type: article Title: Nvidia Nvenc Project: HandBrake Project_URL: https://handbrake.fr/ Project_Version: Latest Language: English Language_Code: en Authors: [ Bradley Sepos (BradleyS), Scott (s55) ] Copyright: 2020 HandBrake Team License: Creative Commons Attribution-ShareAlike 4.0 International License_Abbr: CC BY-SA 4.0 License_URL: https://handbrake.fr/docs/license.html --- Nvidia Nvenc ============ ## Supported Hardware and Configurations - Nvidia GeForce GTX Pascal (1050+) and RTX Turing (1650+, 2060+) series GPU or better - Nvidia Graphics Driver 418.81 or later - Windows 10 - Experimental Linux support is available in HandBrake’s command line interface Please note, these are not hard limits. Hardware encoding via Nvenc *might* work on older series GPUs and older operating systems, but this is not officially supported. ## Enabling support Support for the Nvidia Nvenc encoder is enabled in preferences on the video tab. If your system is not supported, the option will be disabled. ## Performance Only video encoding is performed by the hardware encoder. Every stage prior to and after video encoding including decoding, filters, audio/video sync, audio encoding, muxing, etc., is performed by the CPU. As a result, it is normal to have high (even 100%) CPU utilisation during encodes. It is common, particularly on lower-end hardware, for the CPU to be a bottleneck for the hardware video encoder. To minimize this effect, disable any filters that you do not require. ## Advanced options The Nvidia Nvenc hardware encoder has a limited set of advanced encoder options. Generally speaking, it is not recommended to change these parameters, as the built-in presets offer a good range of options for common uses. From HandBrake’s command line interface, use the `--encopts` parameter as follows: --encopts="option1=value1:option2=value2" From HandBrake’s graphical interface, set the options in the `Advanced Options` field on the `Video` tab: option1=value1:option2=value2 ### Option value types The following value types are supported (each option only accepts one value type): - integer A number that can be written without a fractional or decimal component. - boolean 0 means off (or disabled). 1 means on (or enabled). - string An alphanumeric string of characters. See the option’s comments for acceptable values. ### Options list | Option | Type | H.264 | H.265 | Detail | |------------------|-------------|:-----:|:-----:|-----------------------------------------------------------------------------------------------------------| | gpu | string | ✓ | ✓ | GPU selection. Values: `any` (default), `0` (first GPU), `1` (second GPU), etc. | | coder | string | ✓ | | Coder selection. Values: `auto` (default), `cabac`, `cavlc`. | | temporal-aq | boolean | ✓ | | Set to `1` to enable Temporal Adaptive Quality, `0` to disable (default). Note the hyphen for H.264. | | temporal_aq | boolean | | ✓ | Set to `1` to enable Temporal Adaptive Quality, `0` to disable (default). Note the underscore for H.265. *Requires RTX Turing 1660 or better.* | | spatial-aq | boolean | ✓ | | Set to `1` to enable Spatial Adaptive Quality, `0` to disable (default). Note the hyphen for H.264. | | spatial_aq | boolean | | ✓ | Set to `1` to enable Spatial Adaptive Quality, `0` to disable (default). Note the underscore for H.265. | | aq-strength | int | ✓ | ✓ | When Spatial AQ is enabled, the values scale is `1` (low) – `15` (aggressive). Default: `8`. | | nonref_p | boolean | ✓ | ✓ | Set to `1` to enable automatic insertion of non-reference P-frames, `0` to disable (default). | | strict_gop | boolean | ✓ | ✓ | Set to `1` to minimize GOP-to-GOP rate fluctuations, `0` to disable (default). | | weighted_pred | boolean | ✓ | ✓ | Set to `1` to enable weighted prediction, `0` to disable (default). | | rc-lookahead | int | ✓ | ✓ | Number of frames to look ahead for rate control. Default: `0`. | | b_adapt | boolean | ✓ | | When lookahead is enabled, set this to `1` to enable adaptive B-frame decision (default), `0` to disable. | | no-scenecut | boolean | ✓ | ✓ | When lookahead is enabled, set this to `1` to enable adaptive I-frame insertion at scene cuts (default), `0` to disable. |