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 DefaultThe 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:
- Screen sharing: Text stays crisp and readable
- Pixel art / retro games: No smearing or block artifacts
- Color-critical work: Gradients stay smooth, no banding
- Professional broadcasts: Broadcast-quality output over WebRTC
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 DefaultUses your NVIDIA GPU for video encoding, offloading work from the CPU.
Benefits
- Lower CPU usage - encoding offloaded to GPU
- Better multi-stream performance
- Consistent quality under load
- Cooler, quieter system during long streams
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.
| Mode | CLI Flag | Resolution | Framerate |
|---|---|---|---|
| BALANCED (default) | none | Can drop | Can drop |
| DISABLED | --disableAdaptiveScaling | Locked | Locked |
| MAINTAIN_RESOLUTION | --lockResolution | Locked | Can drop |
| MAINTAIN_FRAMERATE | --lockFramerate | Can drop | Locked |
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
| Feature | Windows | Mac | Linux |
|---|---|---|---|
| QP-Cap (quality lock) | Yes | No | No |
| NVENC encoding | Yes | No | No |
| Adaptive scaling control | Yes | No | No |
| Cursor suppression | Yes | No | No |
| Extended playout delay | Yes | No | No |