This page lists common SDK issues, their symptoms, and solutions.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.
Black screen / no video
Solutions:- Verify your
appIdis correct and the project is active in the Streampixel dashboard - Ensure the UE application is running and connected
- Check that you’re appending
appStream.rootElementin theonVideoInitializedcallback - Inspect the DOM to confirm a
<video>element exists and has asrcObject
Audio not working
Solutions:- The SDK creates two media elements (video and audio). Both must be unmuted:
- Browser autoplay policy requires a user gesture before playing audio. Unmute in response to a button click
- Use
UIControl.toggleAudio()as a shortcut
Connection fails behind firewall
Solutions:- Ensure
forceTurn: trueis set (this is the default). TURN relays bypass most firewalls - Corporate firewalls may block WebSocket connections on non-standard ports. Check with your IT team
- Verify the browser allows WebRTC (some enterprise browsers disable it)
Default Pixel Streaming UI showing through
Solutions:- Add CSS to hide the default UI:
- Also hide programmatically after initialization:
- The
#uiFeatureselement may re-appear afteronVideoInitialized, so hide it in that callback too
Video codec shows raw ID instead of name
Symptom: Stats show something like
RTCCodec_1_Inbound_120 instead of H264.Webpack polyfill errors
Symptom: Build errors like
Module not found: Error: Can't resolve 'crypto' or similar.config-overrides.js setup.
”StreamPixelApplication called more than once”
Solution:StreamPixelApplication is a singleton — it can only be initialized once per page. This commonly happens in React when:
- The component re-renders and calls
StreamPixelApplicationagain useEffectdependencies change, triggering reinitialization
Reconnection not working
Symptom: After a disconnect, the SDK doesn’t attempt to reconnect.
- Automatic reconnection only triggers for WebSocket close codes 1005 and 1006 (abnormal closures). All other codes (project inactive, max runtime, etc.) are intentional disconnects
- The reconnection window is 60 seconds. If the server doesn’t respond within that time, reconnection fails with code 4007
- Listen to
reconnectStream.on('state', ...)to see the exact state transitions and codes
Mobile disconnects when switching apps
Symptom: On iOS/Android, the stream disconnects when the user switches to another app.
Stream works locally but not in production
Solutions:- The SDK validates
window.location.originagainst the project’s allowed URLs list in the dashboard. Add your production domain to thevalidPathUrlsetting localhostis always allowed for development- Wildcard patterns are supported (e.g.,
*.example.com)
Next steps
reconnectStream API
Inspect reconnection state and disconnect codes.
Stream statistics
Use stats to diagnose codec, bitrate, and packet loss issues.