62 KiB
Configuration
@admonition{ Host authority | @htmlonly
By providing the host authority (URI + port), you can easily open each configuration option in the config UI.
Host authority: @endhtmlonly }
Sunshine will work with the default settings for most users. In some cases you may want to configure Sunshine further.
The default location for the configuration file is listed below. You can use another location if you choose, by passing in the full configuration file path as the first argument when you start Sunshine.
Example
sunshine ~/sunshine_config.conf
The default location of the apps.json
is the same as the configuration file. You can use a custom
location by modifying the configuration file.
Default Config Directory
OS | Location |
---|---|
Docker | @code{}/config@endcode |
Linux | @code{}~/.config/sunshine@endcode |
macOS | @code{}~/.config/sunshine@endcode |
Windows | @code{}%ProgramFiles%\Sunshine\config@endcode |
Although it is recommended to use the configuration UI, it is possible manually configure Sunshine by
editing the conf
file in a text editor. Use the examples as reference.
General
locale
Description | The locale used for Sunshine's user interface. | |
Default | @code{} en @endcode | |
Example | @code{} locale = en @endcode | |
Choices | de | German |
en | English | |
en_GB | English (UK) | |
en_US | English (United States) | |
es | Spanish | |
fr | French | |
it | Italian | |
ja | Japanese | |
pt | Portuguese | |
ru | Russian | |
sv | Swedish | |
tr | Turkish | |
zh | Chinese (Simplified) |
sunshine_name
Description | The name displayed by Moonlight. | |
Default | PC hostname | |
Example | @code{} sunshine_name = Sunshine @endcode |
min_log_level
Description | The minimum log level printed to standard out. | |
Default | @code{} info @endcode | |
Example | @code{} min_log_level = info @endcode | |
Choices | verbose | All logging message. @attention{This may negatively affect streaming performance.} |
debug | Debug log messages and higher. @attention{This may negatively affect streaming performance.} | |
info | Informational log messages and higher. | |
warning | Warning log messages and higher. | |
error | Error log messages and higher. | |
fatal | Only fatal log messages. | |
none | No log messages. |
global_prep_cmd
Description | A list of commands to be run before/after all applications. If any of the prep-commands fail, starting the application is aborted. | |
Default | @code{} [] @endcode | |
Example | @code{} global_prep_cmd = [{"do":"nircmd.exe setdisplay 1280 720 32 144","undo":"nircmd.exe setdisplay 2560 1440 32 144"}] @endcode |
notify_pre_releases
Description | Whether to be notified of new pre-release versions of Sunshine. | |
Default | @code{} disabled @endcode | |
Example | @code{} notify_pre_releases = disabled @endcode |
Input
controller
Description | Whether to allow controller input from the client. | |
Default | @code{} enabled @endcode | |
Example | @code{} controller = enabled @endcode |
gamepad
Description | The type of gamepad to emulate on the host. | |
Default | @code{} auto @endcode | |
Example | @code{} gamepad = auto @endcode | |
Choices | ds4 | DualShock 4 controller (PS4) @note{This option applies to Windows only.} |
ds5 | DualShock 5 controller (PS5) @note{This option applies to Linux only.} | |
switch | Switch Pro controller @note{This option applies to Linux only.} | |
x360 | Xbox 360 controller @note{This option applies to Windows only.} | |
xone | Xbox One controller @note{This option applies to Linux only.} |
ds4_back_as_touchpad_click
Description | Allow Select/Back inputs to also trigger DS4 touchpad click. Useful for clients looking to emulate touchpad click on Xinput devices. @hint{Only applies when gamepad is set to ds4 manually. Unused in other gamepad modes.} | |
Default | @code{} enabled @endcode | |
Example | @code{} ds4_back_as_touchpad_click = enabled @endcode |
motion_as_ds4
Description |
If a client reports that a connected gamepad has motion sensor support, emulate it on the
host as a DS4 controller.
When disabled, motion sensors will not be taken into account during gamepad type selection. @hint{Only applies when gamepad is set to auto.} |
|
Default | @code{} enabled @endcode | |
Example | @code{} motion_as_ds4 = enabled @endcode |
touchpad_as_ds4
Description |
If a client reports that a connected gamepad has a touchpad, emulate it on the host
as a DS4 controller.
When disabled, touchpad presence will not be taken into account during gamepad type selection. @hint{Only applies when gamepad is set to auto.} |
|
Default | @code{} enabled @endcode | |
Example | @code{} touchpad_as_ds4 = enabled @endcode |
back_button_timeout
Description | If the Back/Select button is held down for the specified number of milliseconds, a Home/Guide button press is emulated. @tip{If back_button_timeout < 0, then the Home/Guide button will not be emulated.} | |
Default | @code{} -1 @endcode | |
Example | @code{} back_button_timeout = 2000 @endcode |
keyboard
Description | Whether to allow keyboard input from the client. | |
Default | @code{} enabled @endcode | |
Example | @code{} keyboard = enabled @endcode |
key_repeat_delay
Description | The initial delay, in milliseconds, before repeating keys. Controls how fast keys will repeat themselves. | |
Default | @code{} 500 @endcode | |
Example | @code{} key_repeat_delay = 500 @endcode |
key_repeat_frequency
Description | How often keys repeat every second. @tip{This configurable option supports decimals.} | |
Default | @code{} 24.9 @endcode | |
Example | @code{} key_repeat_frequency = 24.9 @endcode |
always_send_scancodes
Description |
Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input
from certain clients that aren't using a US English keyboard layout.
Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host. @caution{Applies to Windows only.} |
|
Default | @code{} enabled @endcode | |
Example | @code{} always_send_scancodes = enabled @endcode |
key_rightalt_to_key_win
Description | It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Sunshine think the Right Alt key is the Windows key. | |
Default | @code{} disabled @endcode | |
Example | @code{} key_rightalt_to_key_win = enabled @endcode |
mouse
Description | Whether to allow mouse input from the client. | |
Default | @code{} enabled @endcode | |
Example | @code{} mouse = enabled @endcode |
high_resolution_scrolling
Description |
When enabled, Sunshine will pass through high resolution scroll events from Moonlight clients.
This can be useful to disable for older applications that scroll too fast with high resolution scroll events. |
|
Default | @code{} enabled @endcode | |
Example | @code{} high_resolution_scrolling = enabled @endcode |
native_pen_touch
Description |
When enabled, Sunshine will pass through native pen/touch events from Moonlight clients.
This can be useful to disable for older applications without native pen/touch support. |
|
Default | @code{} enabled @endcode | |
Example | @code{} native_pen_touch = enabled @endcode |
keybindings
Description | Sometimes it may be useful to map keybindings. Wayland won't allow clients to capture the Win Key for example. @tip{See [virtual key codes](https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes)} @hint{keybindings needs to have a multiple of two elements.} @note{This option is not available in the UI. A PR would be welcome.} | |
Default | @code{} [ 0x10, 0xA0, 0x11, 0xA2, 0x12, 0xA4 ] @endcode | |
Example | @code{} keybindings = [ 0x10, 0xA0, 0x11, 0xA2, 0x12, 0xA4, 0x4A, 0x4B ] @endcode |
Audio/Video
audio_sink
Description |
The name of the audio sink used for audio loopback.
@tip{To find the name of the audio sink follow these instructions.
**Linux + pulseaudio:** @code{} pacmd list-sinks | grep "name:" @endcode **Linux + pipewire:** @code{} pactl info | grep Source # in some causes you'd need to use the `Sink` device, if `Source` doesn't work, so try: pactl info | grep Sink @endcode **macOS:** Sunshine can only access microphones on macOS due to system limitations. To stream system audio use [Soundflower](https://github.com/mattingalls/Soundflower) or [BlackHole](https://github.com/ExistentialAudio/BlackHole). **Windows:** Enter the following command in command prompt or PowerShell. @code{} %ProgramFiles%\Sunshine\tools\audio-info.exe @endcode If you have multiple audio devices with identical names, use the Device ID instead. } @attention{If you want to mute the host speakers, use [virtual_sink](#virtual_sink) instead.} |
|
Default | Sunshine will select the default audio device. | |
Example (Linux) | @code{} audio_sink = alsa_output.pci-0000_09_00.3.analog-stereo @endcode | |
Example (macOS) | @code{} audio_sink = BlackHole 2ch @endcode | |
Example (Windows) | @code{} audio_sink = Speakers (High Definition Audio Device) @endcode |
virtual_sink
Description | The audio device that's virtual, like Steam Streaming Speakers. This allows Sunshine to stream audio, while muting the speakers. @tip{See [audio_sink](#audio_sink)!} @tip{These are some options for virtual sound devices. * Stream Streaming Speakers (Linux, macOS, Windows) * Steam must be installed. * Enable [install_steam_audio_drivers](#install_steam_audio_drivers) or use Steam Remote Play at least once to install the drivers. * [Virtual Audio Cable](https://vb-audio.com/Cable) (macOS, Windows) } | |
Default | n/a | |
Example | @code{} virtual_sink = Steam Streaming Speakers @endcode |
install_steam_audio_drivers
Description | Installs the Steam Streaming Speakers driver (if Steam is installed) to support surround sound and muting host audio. @note{This option is only supported on Windows.} | |
Default | @code{} enabled @endcode | |
Example | @code{} install_steam_audio_drivers = enabled @endcode |
adapter_name
Description |
Select the video card you want to stream.
@tip{To find the appropriate values follow these instructions.
**Linux + VA-API:** Unlike with *amdvce* and *nvenc*, it doesn't matter if video encoding is done on a different GPU. @code{} ls /dev/dri/renderD* # to find all devices capable of VAAPI # replace ``renderD129`` with the device from above to list the name and capabilities of the device vainfo --display drm --device /dev/dri/renderD129 | \ grep -E "((VAProfileH264High|VAProfileHEVCMain|VAProfileHEVCMain10).*VAEntrypointEncSlice)|Driver version" @endcode To be supported by Sunshine, it needs to have at the very minimum: `VAProfileH264High : VAEntrypointEncSlice` **Windows:** Enter the following command in command prompt or PowerShell. @code{} %ProgramFiles%\Sunshine\tools\dxgi-info.exe @endcode For hybrid graphics systems, DXGI reports the outputs are connected to whichever graphics adapter that the application is configured to use, so it's not a reliable indicator of how the display is physically connected. } |
|
Default | Sunshine will select the default video card. | |
Example (Linux) | @code{} adapter_name = /dev/dri/renderD128 @endcode | |
Example (Windows) | @code{} adapter_name = Radeon RX 580 Series @endcode |
output_name
Description |
Select the display number you want to stream.
@tip{To find the appropriate values follow these instructions.
**Linux:** During Sunshine startup, you should see the list of detected displays: @code{} Info: Detecting displays Info: Detected display: DVI-D-0 (id: 0) connected: false Info: Detected display: HDMI-0 (id: 1) connected: true Info: Detected display: DP-0 (id: 2) connected: true Info: Detected display: DP-1 (id: 3) connected: false Info: Detected display: DVI-D-1 (id: 4) connected: false @endcode You need to use the id value inside the parenthesis, e.g. `1`. **macOS:** During Sunshine startup, you should see the list of detected displays: @code{} Info: Detecting displays Info: Detected display: Monitor-0 (id: 3) connected: true Info: Detected display: Monitor-1 (id: 2) connected: true @endcode You need to use the id value inside the parenthesis, e.g. `3`. **Windows:** During Sunshine startup, you should see the list of detected displays: @code{} Info: Currently available display devices: [ { "device_id": "{64243705-4020-5895-b923-adc862c3457e}", "display_name": "", "friendly_name": "IDD HDR", "info": null }, { "device_id": "{77f67f3e-754f-5d31-af64-ee037e18100a}", "display_name": "", "friendly_name": "SunshineHDR", "info": null }, { "device_id": "{daeac860-f4db-5208-b1f5-cf59444fb768}", "display_name": "\\\\.\\DISPLAY1", "friendly_name": "ROG PG279Q", "info": { "hdr_state": null, "origin_point": { "x": 0, "y": 0 }, "primary": true, "refresh_rate": { "type": "rational", "value": { "denominator": 1000, "numerator": 119998 } }, "resolution": { "height": 1440, "width": 2560 }, "resolution_scale": { "type": "rational", "value": { "denominator": 100, "numerator": 100 } } } } ] @endcode You need to use the `device_id` value. } |
|
Default | Sunshine will select the default display. | |
Example (Linux) | @code{} output_name = 0 @endcode | |
Example (macOS) | @code{} output_name = 3 @endcode | |
Example (Windows) | @code{} output_name = {daeac860-f4db-5208-b1f5-cf59444fb768} @endcode |
min_fps_factor
Description | Sunshine will use this factor to calculate the minimum time between frames. Increasing this value may help when streaming mostly static content. @warning{Higher values will consume more bandwidth.} | |
Default | @code{} 1 @endcode | |
Range | 1-3 | |
Example | @code{} min_fps_factor = 1 @endcode |
Network
upnp
Description | Sunshine will attempt to open ports for streaming over the internet. | |
Default | @code{} disabled @endcode | |
Example | @code{} upnp = enabled @endcode |
address_family
Description | Set the address family that Sunshine will use. | |
Default | @code{} ipv4 @endcode | |
Example | @code{} address_family = both @endcode | |
Choices | ipv4 | IPv4 only |
both | IPv4+IPv6 |
port
Description | Set the family of ports used by Sunshine. Changing this value will offset other ports as shown in config UI. | |
Default | @code{} 47989 @endcode | |
Range | 1029-65514 | |
Example | @code{} port = 47989 @endcode |
origin_web_ui_allowed
Description | The origin of the remote endpoint address that is not denied for HTTPS Web UI. | |
Default | @code{} lan @endcode | |
Example | @code{} origin_web_ui_allowed = lan @endcode | |
Choices | pc | Only localhost may access the web ui |
lan | Only LAN devices may access the web ui | |
wan | Anyone may access the web ui |
external_ip
Description | If no external IP address is given, Sunshine will attempt to automatically detect external ip-address. | |
Default | Automatic | |
Example | @code{} external_ip = 123.456.789.12 @endcode |
lan_encryption_mode
Description | This determines when encryption will be used when streaming over your local network. @warning{Encryption can reduce streaming performance, particularly on less powerful hosts and clients.} | |
Default | @code{} 0 @endcode | |
Example | @code{} lan_encryption_mode = 0 @endcode | |
Choices | 0 | encryption will not be used |
1 | encryption will be used if the client supports it | |
2 | encryption is mandatory and unencrypted connections are rejected |
wan_encryption_mode
Description | This determines when encryption will be used when streaming over the Internet. @warning{Encryption can reduce streaming performance, particularly on less powerful hosts and clients.} | |
Default | @code{} 1 @endcode | |
Example | @code{} wan_encryption_mode = 1 @endcode | |
Choices | 0 | encryption will not be used |
1 | encryption will be used if the client supports it | |
2 | encryption is mandatory and unencrypted connections are rejected |
ping_timeout
Description | How long to wait, in milliseconds, for data from Moonlight before shutting down the stream. | |
Default | @code{} 10000 @endcode | |
Example | @code{} ping_timeout = 10000 @endcode |
Config Files
file_apps
Description | The application configuration file path. The file contains a JSON formatted list of applications that can be started by Moonlight. | |
Default | @code{} apps.json @endcode | |
Example | @code{} file_apps = apps.json @endcode |
credentials_file
Description | The file where user credentials for the UI are stored. | |
Default | @code{} sunshine_state.json @endcode | |
Example | @code{} credentials_file = sunshine_state.json @endcode |
log_path
Description | The path where the Sunshine log is stored. | |
Default | @code{} sunshine.log @endcode | |
Example | @code{} log_path = sunshine.log @endcode |
pkey
Description | The private key used for the web UI and Moonlight client pairing. For best compatibility, this should be an RSA-2048 private key. @warning{Not all Moonlight clients support ECDSA keys or RSA key lengths other than 2048 bits.} | |
Default | @code{} credentials/cakey.pem @endcode | |
Example | @code{} pkey = /dir/pkey.pem @endcode |
cert
Description | The certificate used for the web UI and Moonlight client pairing. For best compatibility, this should have an RSA-2048 public key. @warning{Not all Moonlight clients support ECDSA keys or RSA key lengths other than 2048 bits.} | |
Default | @code{} credentials/cacert.pem @endcode | |
Example | @code{} cert = /dir/cert.pem @endcode |
file_state
Description | The file where current state of Sunshine is stored. | |
Default | @code{} sunshine_state.json @endcode | |
Example | @code{} file_state = sunshine_state.json @endcode |
Advanced
fec_percentage
Description | Percentage of error correcting packets per data packet in each video frame. @warning{Higher values can correct for more network packet loss, but at the cost of increasing bandwidth usage.} | |
Default | @code{} 20 @endcode | |
Range | 1-255 | |
Example | @code{} fec_percentage = 20 @endcode |
qp
Description | Quantization Parameter. Some devices don't support Constant Bit Rate. For those devices, QP is used instead. @warning{Higher value means more compression, but less quality.} | |
Default | @code{} 28 @endcode | |
Example | @code{} qp = 28 @endcode |
min_threads
Description | Minimum number of CPU threads used for encoding. @note{Increasing the value slightly reduces encoding efficiency, but the tradeoff is usually worth it to gain the use of more CPU cores for encoding. The ideal value is the lowest value that can reliably encode at your desired streaming settings on your hardware.} | |
Default | @code{} 2 @endcode | |
Example | @code{} min_threads = 2 @endcode |
hevc_mode
Description | Allows the client to request HEVC Main or HEVC Main10 video streams. @warning{HEVC is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.} | |
Default | @code{} 0 @endcode | |
Example | @code{} hevc_mode = 2 @endcode | |
Choices | 0 | advertise support for HEVC based on encoder capabilities (recommended) |
1 | do not advertise support for HEVC | |
2 | advertise support for HEVC Main profile | |
3 | advertise support for HEVC Main and Main10 (HDR) profiles |
av1_mode
Description | Allows the client to request AV1 Main 8-bit or 10-bit video streams. @warning{AV1 is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.} | |
Default | @code{} 0 @endcode | |
Example | @code{} av1_mode = 2 @endcode | |
Choices | 0 | advertise support for AV1 based on encoder capabilities (recommended) |
1 | do not advertise support for AV1 | |
2 | advertise support for AV1 Main 8-bit profile | |
3 | advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles |
capture
Description | Force specific screen capture method. | |
Default | Automatic. Sunshine will use the first capture method available in the order of the table above. | |
Example | @code{} capture = kms @endcode | |
Choices | nvfbc | Use NVIDIA Frame Buffer Capture to capture direct to GPU memory. This is usually the fastest method for NVIDIA cards. NvFBC does not have native Wayland support and does not work with XWayland. @note{Applies to Linux only.} |
wlr | Capture for wlroots based Wayland compositors via DMA-BUF. @note{Applies to Linux only.} | |
kms | DRM/KMS screen capture from the kernel. This requires that Sunshine has `cap_sys_admin` capability. @note{Applies to Linux only.} | |
x11 | Uses XCB. This is the slowest and most CPU intensive so should be avoided if possible. @note{Applies to Linux only.} | |
ddx | Use DirectX Desktop Duplication API to capture the display. This is well-supported on Windows machines. @note{Applies to Windows only.} | |
wgc | (beta feature) Use Windows.Graphics.Capture to capture the display. @note{Applies to Windows only.} @attention{This capture method is not compatible with the Sunshine service.} |
encoder
Description | Force a specific encoder. | |
Default | Sunshine will use the first encoder that is available. | |
Example | @code{} encoder = nvenc @endcode | |
Choices | nvenc | For NVIDIA graphics cards |
quicksync | For Intel graphics cards | |
amdvce | For AMD graphics cards | |
vaapi | Use Linux VA-API (AMD, Intel) | |
software | Encoding occurs on the CPU |
NVIDIA NVENC Encoder
nvenc_preset
Description | NVENC encoder performance preset. Higher numbers improve compression (quality at given bitrate) at the cost of increased encoding latency. Recommended to change only when limited by network or decoder, otherwise similar effect can be accomplished by increasing bitrate. @note{This option only applies when using NVENC [encoder](#encoder).} | |
Default | @code{} 1 @endcode | |
Example | @code{} nvenc_preset = 1 @endcode | |
Choices | 1 | P1 (fastest) |
2 | P2 | |
3 | P3 | |
4 | P4 | |
5 | P5 | |
6 | P6 | |
7 | P7 (slowest) |
nvenc_twopass
Description | Enable two-pass mode in NVENC encoder. This allows to detect more motion vectors, better distribute bitrate across the frame and more strictly adhere to bitrate limits. Disabling it is not recommended since this can lead to occasional bitrate overshoot and subsequent packet loss. @note{This option only applies when using NVENC [encoder](#encoder).} | |
Default | @code{} quarter_res @endcode | |
Example | @code{} nvenc_twopass = quarter_res @endcode | |
Choices | disabled | One pass (fastest) |
quarter_res | Two passes, first pass at quarter resolution (faster) | |
full_res | Two passes, first pass at full resolution (slower) |
nvenc_spatial_aq
Description | Assign higher QP values to flat regions of the video. Recommended to enable when streaming at lower bitrates. @note{This option only applies when using NVENC [encoder](#encoder).} @warning{Enabling this option may reduce performance.} | |
Default | @code{} disabled @endcode | |
Example | @code{} nvenc_spatial_aq = disabled @endcode |
nvenc_vbv_increase
Description | Single-frame VBV/HRD percentage increase. By default Sunshine uses single-frame VBV/HRD, which means any encoded video frame size is not expected to exceed requested bitrate divided by requested frame rate. Relaxing this restriction can be beneficial and act as low-latency variable bitrate, but may also lead to packet loss if the network doesn't have buffer headroom to handle bitrate spikes. Maximum accepted value is 400, which corresponds to 5x increased encoded video frame upper size limit. @note{This option only applies when using NVENC [encoder](#encoder).} @warning{Can lead to network packet loss.} | |
Default | @code{} 0 @endcode | |
Range | 0-400 | |
Example | @code{} nvenc_vbv_increase = 0 @endcode |
nvenc_realtime_hags
Description | Use realtime gpu scheduling priority in NVENC when hardware accelerated gpu scheduling (HAGS) is enabled in Windows. Currently, NVIDIA drivers may freeze in encoder when HAGS is enabled, realtime priority is used and VRAM utilization is close to maximum. Disabling this option lowers the priority to high, sidestepping the freeze at the cost of reduced capture performance when the GPU is heavily loaded. @note{This option only applies when using NVENC [encoder](#encoder).} @note{Applies to Windows only.} | |
Default | @code{} enabled @endcode | |
Example | @code{} nvenc_realtime_hags = enabled @endcode |
nvenc_latency_over_power
Description | Adaptive P-State algorithm which NVIDIA drivers employ doesn't work well with low latency streaming, so Sunshine requests high power mode explicitly. @note{This option only applies when using NVENC [encoder](#encoder).} @warning{Disabling this is not recommended since this can lead to significantly increased encoding latency.} @note{Applies to Windows only.} | |
Default | @code{} enabled @endcode | |
Example | @code{} nvenc_latency_over_power = enabled @endcode |
nvenc_opengl_vulkan_on_dxgi
Description | Sunshine can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. With this option enabled Sunshine changes global Vulkan/OpenGL present method to "Prefer layered on DXGI Swapchain". This is system-wide setting that is reverted on Sunshine program exit. @note{This option only applies when using NVENC [encoder](#encoder).} @note{Applies to Windows only.} | |
Default | @code{} enabled @endcode | |
Example | @code{} nvenc_opengl_vulkan_on_dxgi = enabled @endcode |
nvenc_h264_cavlc
Description | Prefer CAVLC entropy coding over CABAC in H.264 when using NVENC. CAVLC is outdated and needs around 10% more bitrate for same quality, but provides slightly faster decoding when using software decoder. @note{This option only applies when using H.264 format with the NVENC [encoder](#encoder).} | |
Default | @code{} disabled @endcode | |
Example | @code{} nvenc_h264_cavlc = disabled @endcode |
Intel QuickSync Encoder
qsv_preset
Description | The encoder preset to use. @note{This option only applies when using quicksync [encoder](#encoder).} | |
Default | @code{} medium @endcode | |
Example | @code{} qsv_preset = medium @endcode | |
Choices | veryfast | fastest (lowest quality) |
faster | faster (lower quality) | |
fast | fast (low quality) | |
medium | medium (default) | |
slow | slow (good quality) | |
slower | slower (better quality) | |
veryslow | slowest (best quality) |
qsv_coder
Description | The entropy encoding to use. @note{This option only applies when using H.264 with the quicksync [encoder](#encoder).} | |
Default | @code{} auto @endcode | |
Example | @code{} qsv_coder = auto @endcode | |
Choices | auto | let ffmpeg decide |
cabac | context adaptive binary arithmetic coding - higher quality | |
cavlc | context adaptive variable-length coding - faster decode |
qsv_slow_hevc
Description | This options enables use of HEVC on older Intel GPUs that only support low power encoding for H.264. @note{This option only applies when using quicksync [encoder](#encoder).} @caution{Streaming performance may be significantly reduced when this option is enabled.} | |
Default | @code{} disabled @endcode | |
Example | @code{} qsv_slow_hevc = disabled @endcode |
AMD AMF Encoder
amd_usage
Description | The encoder usage profile is used to set the base set of encoding parameters. @note{This option only applies when using amdvce [encoder](#encoder).} @note{The other AMF options that follow will override a subset of the settings applied by your usage profile, but there are hidden parameters set in usage profiles that cannot be overridden elsewhere.} | |
Default | @code{} ultralowlatency @endcode | |
Example | @code{} amd_usage = ultralowlatency @endcode | |
Choices | transcoding | transcoding (slowest) |
webcam | webcam (slow) | |
lowlatency_high_quality | low latency, high quality (fast) | |
lowlatency | low latency (faster) | |
ultralowlatency | ultra low latency (fastest) |
amd_rc
Description | The encoder rate control. @note{This option only applies when using amdvce [encoder](#encoder).} @warning{The `vbr_latency` option generally works best, but some bitrate overshoots may still occur. Enabling HRD allows all bitrate based rate controls to better constrain peak bitrate, but may result in encoding artifacts depending on your card.} | |
Default | @code{} vbr_latency @endcode | |
Example | @code{} amd_rc = vbr_latency @endcode | |
Choices | cqp | constant qp mode |
cbr | constant bitrate | |
vbr_latency | variable bitrate, latency constrained | |
vbr_peak | variable bitrate, peak constrained |
amd_enforce_hrd
Description | Enable Hypothetical Reference Decoder (HRD) enforcement to help constrain the target bitrate. @note{This option only applies when using amdvce [encoder](#encoder).} @warning{HRD is known to cause encoding artifacts or negatively affect encoding quality on certain cards.} | |
Default | @code{} disabled @endcode | |
Example | @code{} amd_enforce_hrd = disabled @endcode |
amd_quality
Description | The quality profile controls the tradeoff between speed and quality of encoding. @note{This option only applies when using amdvce [encoder](#encoder).} | |
Default | @code{} balanced @endcode | |
Example | @code{} amd_quality = balanced @endcode | |
Choices | speed | prefer speed |
balanced | balanced | |
quality | prefer quality |
amd_preanalysis
Description | Preanalysis can increase encoding quality at the cost of latency. @note{This option only applies when using amdvce [encoder](#encoder).} | |
Default | @code{} disabled @endcode | |
Example | @code{} amd_preanalysis = disabled @endcode |
amd_vbaq
Description | Variance Based Adaptive Quantization (VBAQ) can increase subjective visual quality by prioritizing allocation of more bits to smooth areas compared to more textured areas. @note{This option only applies when using amdvce [encoder](#encoder).} | |
Default | @code{} enabled @endcode | |
Example | @code{} amd_vbaq = enabled @endcode |
amd_coder
Description | The entropy encoding to use. @note{This option only applies when using H.264 with the amdvce [encoder](#encoder).} | |
Default | @code{} auto @endcode | |
Example | @code{} amd_coder = auto @endcode | |
Choices | auto | let ffmpeg decide |
cabac | context adaptive binary arithmetic coding - faster decode | |
cavlc | context adaptive variable-length coding - higher quality |
VideoToolbox Encoder
vt_coder
Description | The entropy encoding to use. @note{This option only applies when using macOS.} | |
Default | @code{} auto @endcode | |
Example | @code{} vt_coder = auto @endcode | |
Choices | auto | let ffmpeg decide |
cabac | context adaptive binary arithmetic coding - faster decode | |
cavlc | context adaptive variable-length coding - higher quality |
vt_software
Description | Force Video Toolbox to use software encoding. @note{This option only applies when using macOS.} | |
Default | @code{} auto @endcode | |
Example | @code{} vt_software = auto @endcode | |
Choices | auto | let ffmpeg decide |
disabled | disable software encoding | |
allowed | allow software encoding | |
forced | force software encoding |
vt_realtime
Description | Realtime encoding. @note{This option only applies when using macOS.} @warning{Disabling realtime encoding might result in a delayed frame encoding or frame drop.} | |
Default | @code{} enabled @endcode | |
Example | @code{} vt_realtime = enabled @endcode |
VA-API Encoder
vaapi_strict_rc_buffer
Description | Enabling this option can avoid dropped frames over the network during scene changes, but video quality may be reduced during motion. @note{This option only applies for H.264 and HEVC when using VA-API [encoder](#encoder) on AMD GPUs.} | |
Default | @code{} disabled @endcode | |
Example | @code{} vaapi_strict_rc_buffer = enabled @endcode |
Software Encoder
sw_preset
Description |
The encoder preset to use.
@note{This option only applies when using software [encoder](#encoder).}
@note{From [FFmpeg](https://trac.ffmpeg.org/wiki/Encode/H.264#preset).
A preset is a collection of options that will provide a certain encoding speed to compression ratio. A slower preset will provide better compression (compression is quality per filesize). This means that, for example, if you target a certain file size or constant bit rate, you will achieve better quality with a slower preset. Similarly, for constant quality encoding, you will simply save bitrate by choosing a slower preset. Use the slowest preset that you have patience for.} |
|
Default | @code{} superfast @endcode | |
Example | @code{} sw_preset = superfast @endcode | |
Choices | ultrafast | fastest |
superfast | ||
veryfast | ||
faster | ||
fast | ||
medium | ||
slow | ||
slower | ||
veryslow | slowest |
sw_tune
Description |
The tuning preset to use.
@note{This option only applies when using software [encoder](#encoder).}
@note{From [FFmpeg](https://trac.ffmpeg.org/wiki/Encode/H.264#preset).
You can optionally use -tune to change settings based upon the specifics of your input. } |
|
Default | @code{} zerolatency @endcode | |
Example | @code{} sw_tune = zerolatency @endcode | |
Choices | film | use for high quality movie content; lowers deblocking |
animation | good for cartoons; uses higher deblocking and more reference frames | |
grain | preserves the grain structure in old, grainy film material | |
stillimage | good for slideshow-like content | |
fastdecode | allows faster decoding by disabling certain filters | |
zerolatency | good for fast encoding and low-latency streaming |
Previous | Next |
---|---|
Legal | App Examples |