BeatKhana Development

Streaming, WebRTC and OBS

Stream assignments, WHIP publishing, WHEP playback, OBS browser sources and live production checks.

BeatKhana can accept a low-latency player or programme feed, play that feed inside a dynamic overlay, and render the finished overlay in OBS. Streaming permissions, match assignments and score authority remain separate.

Roles and assignments

Enable List assigned casters and List assigned stream hosts on a match when the on-air team should be visible. Casters receive context and commentate. Stream hosts operate scenes, video, audio and output. Neither role can change an official score unless it also has the relevant tournament permission.

Stream keys are assigned independently. Treat a key as a password: give it to one accountable person, never place it in a scene file or screenshot, and ask authorised staff to rotate it after exposure.

Publish from a browser

The browser publisher is available at beatkhana.com/stream/whip. It is useful when someone needs to share a screen, window or browser tab without configuring broadcasting software.

  1. Sign in and open the browser streaming page.
  2. Select an assigned stream key. A regular key publishes to the user's personal endpoint; a floating key also requires a destination.
  3. If authorised credentials were supplied separately, choose Use custom credentials and enter the WHIP endpoint and stream key.
  4. Select Start stream, then choose the screen, window or tab in the browser prompt.
  5. Keep the page open while live and use Stop stream before closing it.

Browser capture permissions are controlled by the operating system and browser. If the desired window is absent, enable screen-recording permission, reopen the browser and try again. Share only the intended window where privacy matters.

Publish from OBS with WHIP

OBS Studio 30 or newer supports WHIP directly. Get the assigned WHIP URL and Bearer Token from the Streaming tab of BeatKhana account settings. A personal endpoint resembles:

https://webrtc.ingress.stream.beatkhana.com/live/user-YOUR_GUID/whip

In OBS:

  1. Open Settings → Stream.
  2. Set Service to WHIP.
  3. Paste the WHIP URL into Server.
  4. Paste the stream key into Bearer Token.
  5. Accept the server confirmation if OBS asks.
  6. Add the intended Beat Saber game/window capture and audio sources, then select Start Streaming.

If WHIP is missing from the service list, update OBS. Do not use the WHEP playback URL as the publishing server; WHIP is ingest and WHEP is playback.

SettingStarting point
Output modeAdvanced
EncoderA hardware encoder when available, otherwise x264
Rate controlCBR
Keyframe interval2 seconds
720p303,000–4,000 Kbps
720p604,000–5,000 Kbps
1080p304,500–6,000 Kbps
1080p605,500–7,000 Kbps

Keep upload capacity comfortably above the chosen bitrate; 1.5 times the stream bitrate is a useful minimum. Lower bitrate or resolution before accepting sustained dropped frames.

Audio

WHIP carries the OBS programme audio. Route the required game, microphone and communication sources to the broadcast track—normally Track 1—and monitor before going live. Avoid capturing the same audio through both desktop audio and an application source, which creates echo. Use headphones when a microphone could hear programme output.

Play a WebRTC stream in an overlay

Open the tournament's dynamic overlay editor, choose the target scene, then add a media component:

  • Player Stream follows the BeatKhana user assigned to a chosen team/player slot. This is the normal choice for a coordinated match because the source changes with live match state.
  • WebRTC Player accepts a specific WHEP playback source when the feed should not follow a player slot.

For Player Stream, select the correct team and player indices. For WebRTC Player, enter the authorised WHEP source URL. Size the component to the intended frame and choose fit or fill deliberately. Keep a waiting message for times when the player is offline.

WebRTC playback is muted by default so browser autoplay succeeds. If the stream's audio is required, unmute it in the component and enable Control audio via OBS on the browser source. Monitor for doubled game audio if the host also captures another copy.

WHIP in, WHEP out

The contributor publishes once through WHIP. BeatKhana's WebRTC player retrieves the corresponding feed through WHEP. Viewers and overlay operators do not need the contributor's bearer token.

Add a BeatKhana scene to OBS

Each dynamic overlay scene has a browser-source URL and a defined canvas size.

  1. Copy the scene's render URL from the overlay controls.
  2. In OBS, add Sources → Browser and leave Local file disabled.
  3. Paste the URL and enter the scene's exact width and height, commonly 1920 × 1080.
  4. Use 60 FPS for gameplay-heavy animation if the production machine can sustain it.
  5. Enable Control audio via OBS only when the scene contains audio that should reach the programme mix.
  6. Verify transparency, fonts, video autoplay and live data before using the scene on air.

Do not crop an incorrectly sized browser source into place; mismatched dimensions can distort positions and text. If the scene must continue receiving live state while hidden, leave Shutdown source when not visible disabled. Refresh browser when scene becomes active can provide a clean reload but also restarts WebRTC playback and realtime state, so use it only after testing.

Use separate overlay scenes for gameplay, desk, countdown, bracket and results when their layouts differ significantly. This keeps OBS transitions predictable and prevents one overloaded canvas from becoming a production control panel.

End-to-end test

  1. Assign the stream host, casters and player slots to a test match.
  2. Publish a test feed through the browser page or OBS WHIP.
  3. Confirm the correct Player Stream or WebRTC Player shows video in the overlay renderer.
  4. Open the renderer as an OBS browser source at native resolution.
  5. Verify programme audio, sync, mute behaviour and scene transitions.
  6. Interrupt the publisher briefly and confirm the waiting state and recovery.
  7. Disconnect and reconnect the overlay browser source to verify live data resynchronises.
  8. Record a local test and inspect motion, text, colour, clipping and audio before the tournament.

Troubleshooting

Publishing fails immediately

Confirm that the URL ends in /whip, the bearer token has no copied spaces, the key is still assigned, and a floating key has a destination. Never post credentials in a public support channel.

The overlay says the stream is unavailable

Check that the contributor is currently publishing, the overlay uses the correct player slot or WHEP URL, and the selected BeatKhana user matches the stream owner. Reload the browser source after fixing the binding.

Video stutters or falls behind

Lower the publishing bitrate or resolution, use a hardware encoder, close bandwidth-heavy applications and check OBS dropped-frame statistics. Also confirm the production computer can render the overlay and encode the final programme simultaneously.

Video works but audio does not

Confirm the publishing source is routed to the chosen OBS track. On the receiving browser source, enable OBS audio control and unmute the relevant overlay component. Check the OBS Advanced Audio Properties for monitoring and track assignment.

Browser source is blank or stale

Check the render URL and canvas size, refresh the browser-source cache, then confirm the tournament, overlay and scene still exist and are accessible. If all dynamic data is stale, verify the network connection and allow the renderer to reconnect before taking it live.

Live production checklist

  • Lock the match, pool, flow and team order before going live.
  • Confirm stream-host and caster assignments plus private communications.
  • Verify every contributor and keep a fallback scene or conventional stream route.
  • Confirm live TA players, selected map, scores, replay state and declared-result workflow.
  • Record locally when required and check available storage.
  • Attach the final VOD URL to the completed match.

On this page