Advanced Features

QP-cap patches, NVENC encoding, and adaptive scaling controls.

Windows Only: These features are only available in the Windows custom build. Mac and Linux use official Electron releases.

QP-Cap Patches

Enabled by Default

The custom build limits the maximum quantizer parameter (QP) to 20 instead of the default 51-58. Lower QP means higher quality with less compression artifacts.

Why This Matters

Standard WebRTC was designed for video calls, not broadcast. It aggressively compresses video to save bandwidth, causing visible quality loss. This patch forces near-lossless encoding:

Affected Codecs

H.264, H.265/HEVC, VP8, VP9, and AV1 all benefit automatically.

How to Verify

Open chrome://webrtc-internals and look for googQpSum in the stats. Values should stay low (under 25).

NVENC Hardware Encoding

Enabled by Default

Uses your NVIDIA GPU for video encoding, offloading work from the CPU.

Benefits

Requirements

NVIDIA GPU with NVENC support (GTX 600 series or newer).

HEVC/H.265 Support

Electron Capture supports HEVC/H.265 hardware encoding, which OBS Browser Source does not support. HEVC offers better quality at lower bitrates.

Adaptive Scaling Controls

Control how WebRTC adapts video quality under CPU/network stress.

ModeCLI FlagResolutionFramerate
BALANCED (default)noneCan dropCan drop
DISABLED--disableAdaptiveScalingLockedLocked
MAINTAIN_RESOLUTION--lockResolutionLockedCan drop
MAINTAIN_FRAMERATE--lockFramerateCan dropLocked

Examples

# Maximum quality - lock both resolution AND framerate
elecap.exe --disableAdaptiveScaling --url="https://vdo.ninja/..."

# Keep resolution sharp, allow framerate to drop if needed
elecap.exe --lockResolution --url="https://vdo.ninja/..."

# Keep smooth motion, allow resolution to drop if needed
elecap.exe --lockFramerate --url="https://vdo.ninja/..."

Trade-off: Disabling adaptive scaling may cause frame drops if your CPU/network can't keep up. Use on capable hardware.

Cursor Suppression

Hide the mouse cursor from screen captures while keeping it visible locally.

# CLI option
elecap.exe --hideCursorCapture --url="https://vdo.ninja/?ss=1"

# JavaScript API
const stream = await navigator.mediaDevices.getDisplayMedia({
  video: { cursor: 'never' }
});

Extended Playout Delay

Increases maximum receiver buffer from 10 seconds to 10 minutes for better packet loss recovery over unreliable networks.

# Set 30-second buffer
elecap.exe --playoutDelay=30 --url="https://vdo.ninja/..."

# For satellite uplinks - 2 minute buffer
elecap.exe --playoutDelay=120 --url="https://vdo.ninja/..."

JavaScript API

// Set buffer on RTCRtpReceiver
receiver.playoutDelayHint = 120; // 2 minute buffer

// Or use the Electron helper
window.electronApi.applyPlayoutDelay(receiver, 60);

JavaScript API Summary

// Get all preferences
window.electronApi.getCapturePreferences();

// Individual checks
window.electronApi.isCursorSuppressionEnabled();
window.electronApi.isAdaptiveScalingDisabled();
window.electronApi.getPlayoutDelay();

Feature Availability

FeatureWindowsMacLinux
QP-Cap (quality lock)YesNoNo
NVENC encodingYesNoNo
Adaptive scaling controlYesNoNo
Cursor suppressionYesNoNo
Extended playout delayYesNoNo