The outcome: a stream that hits the latency, FPS, and visual quality your use case requires, with the right tradeoffs for your audience’s devices and networks. Streaming performance is multidimensional — encode time on the worker, network RTT to the viewer, decode time on the client. Tuning means picking the right point on the curve, not maximizing one axis.Documentation Index
Fetch the complete documentation index at: https://docs.streampixel.io/llms.txt
Use this file to discover all available pages before exploring further.
Targets by use case
There is no universal “good performance.” Pick the profile that matches your project:| Use case | Glass-to-glass latency | FPS | Resolution | Bitrate |
|---|---|---|---|---|
| Cinematic walkthrough | ≤ 200 ms | 30 | 1080p | 6–10 Mbps |
| Product configurator | ≤ 150 ms | 60 | 1080p | 6–10 Mbps |
| Multiplayer game (host + viewers) | ≤ 120 ms | 60 | 1080p | 4–6 Mbps |
| Interactive simulation / sim training | ≤ 100 ms | 60 | 1440p | 12–18 Mbps |
| VR | ≤ 80 ms motion-to-photon | 72/90 | 1920×1080 per eye | 20–30 Mbps |
Region selection
The single biggest lever. Streampixel runs in three regions:- US-East-1
- Europe
- Asia Pacific
Codec choice
| Codec | Quality / bitrate | Decode support | When to use |
|---|---|---|---|
| H264 | Baseline | Universal — every browser, every mobile, every headset | Default for broad audiences, mobile, VR |
| VP8 | Slightly worse than H264 | Wide | Rare; prefer H264 |
| VP9 | ~40% better than H264 at same bitrate | Most modern browsers, software-decoded on many mobiles | Desktop-first audiences with bandwidth constraints |
| AV1 | Best | Chrome desktop only | Niche — Chrome desktop power users |
Resolution and bitrate
Pair these as a unit — high resolution at low bitrate looks worse than lower resolution at the same bitrate.| Use case | Resolution | Bitrate |
|---|---|---|
| Mobile | 720p | 2–4 Mbps |
| Desktop standard | 1080p | 6–10 Mbps |
| Desktop high quality | 1440p | 12–18 Mbps |
| Desktop 4K (rare) | 2160p | 25–40 Mbps |
| VR | 1920×1080 per eye | 20–30 Mbps |
- Bits per pixel per second. A 1080p60 stream at 6 Mbps gives ~50 milli-bits per pixel per frame. Below ~30 mbpp/f you start seeing compression artifacts in motion. Use this when sizing custom resolutions.
- Decode budget. A device that can play your stream at 1080p smoothly may stutter at 1440p even if the network has the bandwidth. Decoder throughput is the hidden ceiling.
Adaptive vs fixed bitrate
Adaptive (default) lets the encoder ramp bitrate up and down based on observed network capacity. Best for variable networks (mobile, home Wi-Fi). Fixed holds a constant bitrate. Best for controlled environments (events on dedicated networks, kiosks on Ethernet) where you want predictable visual quality. Tradeoffs:| Adaptive | Fixed | |
|---|---|---|
| Quality on bad networks | Drops bitrate, stays smooth | Drops frames, freezes |
| Quality on good networks | Climbs to ceiling | Held constant |
| Predictable bandwidth | No | Yes |
| Best for | Variable / mobile | Kiosks / events |
Reducing perceived latency
If your stream feels laggy even though throughput is fine, the bottleneck is somewhere other than bandwidth. Try, in order:Verify region
Run
ping api.streampixel.io (loose proxy for region selection). RTT > 100 ms is a red flag — pick a closer region.Switch to H264
H264 hardware decode is faster than VP9/AV1 software decode on most consumer hardware. Wins ~10–30 ms on mobile and standalone headsets.
Lower minQP
Lowering the minimum quantization parameter lets the encoder spend more bits on each frame, reducing the chance of B-frame queueing. Configure from the dashboard’s adaptive settings.
Raise maxBitrate
If you’ve capped maxBitrate aggressively for bandwidth reasons but the network can handle more, raising the cap reduces compression artifacts and the perception of lag.
Network: TURN-only mode for restrictive networks
Corporate networks often block UDP and direct WebRTC entirely. Set:forceTurn on by default and only disable it for performance-sensitive internal use cases.
Diagnosing performance: stream stats
Subscribe to the SDK’s stats events to see what’s actually happening:| Symptom | Likely cause |
|---|---|
| FPS oscillating between 30 and 60 | Decoder throttling (often thermal on mobile) or bitrate adaptation churn |
| Bitrate well below configured max | Network can’t sustain higher; check RTT and packet loss |
| RTT > 100 ms | Wrong region, or user on bad network |
| Packets lost > 1% | Network congestion or Wi-Fi interference |
| Jitter > 30 ms | Unstable connection, likely Wi-Fi |
| Codec not what you expected | Browser negotiated a different codec — check preferredCodec |
UE-side optimizations
Streampixel can’t make a slow Unreal project fast. If your scene drops below 60 fps on the worker, no amount of network tuning will produce a 60 fps stream. Quick wins that often help:- Lock the target framerate.
t.MaxFPS 60keeps the encoder in sync with consistent frame intervals. Variable frame times confuse the encoder. - Disable expensive shadows where not needed. Movable lights with dynamic shadows are the most common framerate killer in real-time scenes.
- Lower texture mip levels. Streamed pixels won’t show your highest-mip detail anyway.
r.Streaming.MipBias 1saves VRAM with negligible visual impact at typical streaming resolutions. - Forward renderer for VR / mobile-targeted streams. Cheaper, more deterministic frame times than the deferred renderer.
- Disable AA passes that don’t survive video encoding. Heavy TAA gets blurred away by H264 anyway; FXAA or no AA can look identical and render faster.
Debugging high latency
When users report “the stream feels laggy,” walk this checklist:Confirm region
Which region is the project in? Where is the user? If they don’t match, fix that first.
Check stats
Have the user open dev tools and report RTT, FPS, bitrate, packet loss. Stats > intuition.
Check codec
If they’re on Safari and the stream negotiated VP9, software decode is killing them. Re-init with
preferredCodec: 'H264'.Check network type
Cellular vs. Wi-Fi vs. Ethernet. Cellular adds 30–80 ms vs. wired. Wi-Fi 5 GHz is much better than 2.4 GHz for streaming.
Check forceTurn
If they’re on a corporate network and
forceTurn: false, the connection might have failed over to slower paths. Try with forceTurn: true.Pre-launch perf checklist
Before opening to a real audience:- Region matches audience geography.
- Codec set explicitly, not left to default negotiation.
- Resolution + bitrate pair appropriate for target devices.
- Adaptive bitrate enabled (unless you have a specific reason for fixed).
-
forceTurn: truefor broad audiences. - UE project hits target FPS on the worker hardware.
- Stream stats panel available in dev/staging for spot-checks.
- Tested on the slowest device class your users will bring (e.g., a mid-range Android on LTE).
Next steps
Regions
Where your project runs determines your latency floor.
Codec settings
Choose H264, VP8, VP9, or AV1 per project.
Mobile streaming
Bitrate and codec recipes specific to mobile browsers.
Multiplayer streaming
Per-viewer bitrate budgets for SFU sessions.