Module: LCKStreaming | Version: 1.0 | Platforms: Win64, Android (Quest)
Overview
This guide walks through enabling and using LCKStreaming from C++ in five steps. By the end, your game will authenticate with the LIV backend and stream to YouTube, Twitch, or a manual RTMP endpoint.Pairing to LIV Hub in Play In Editor mode
You must pair your game to LIV Hub on your Meta Quest. ie: LIV Hub doesn’t need to be on the same device that you’re pairing the game to.- In editor, while in play mode, go to the streaming tab to trigger the pairing code
- In LIV Hub on the Meta Quest, pair your game via the LIV Camera Games section
- Enter the pairing code in the editor
Step 1: Enable Streaming
In Project Settings → Plugins → LCK SDK → Features, enablebEnableStreaming.
You can also set it in your DefaultGame.ini:
Step 2: Add Module Dependencies
Step 3: Access the Subsystem
ULCKStreamingSubsystem is a UGameInstanceSubsystem. Access it from any point where you have a valid game instance.
Step 4: Authenticate and Stream
The minimum flow is: start login, wait for authentication, then start streaming.Step 5: Stop Streaming
Complete State Check Example
Use the state query methods to build your UI:All Available Delegates
| Delegate | Signature | When |
|---|---|---|
OnPairingCodeReceived | FOnLCKPairingCodeReceived(const FString&, Code) | Pairing code ready for display |
OnAuthenticated | FOnLCKAuthenticated() | Login succeeded |
OnStreamingConfigReceived | FOnLCKStreamingConfigReceived(ELCKStreamingTargetType, const FLCKUserSubscription&) | Config loaded from server |
OnStreamStarted | FOnLCKStreamStarted() | RTMP connection active |
OnStreamStopped | FOnLCKStreamStopped() | Stream ended cleanly |
OnStreamError | FOnLCKStreamError(const FString&, ErrorMessage) | An error occurred |
OnLoggedOut | FOnLCKLoggedOut() | User logged out |
Troubleshooting
StartStreaming() returns false
StartStreaming() returns false
- Check
IsAuthenticated()— the user must be logged in first - Check
HasStreamingTarget()— the streaming config must be loaded - Check
HasActiveSubscription()— an active subscription is required - Verify
bEnableStreamingistruein project settings - Check
LogLCKStreamingfor detailed error output
Stream starts but drops immediately
Stream starts but drops immediately
- Check
OnStreamErrorfor the error message - Verify network connectivity to the RTMP ingest server
- Ensure the encoder is available (not locked by another process)
- The health check allows 2 consecutive failures before stopping — check logs for encoder health warnings
Pairing code never arrives
Pairing code never arrives
- Verify network connectivity to
dashboard.liv.tv - Check that the Tracking ID is valid
- Look for errors in
LogLCKStreaming
See Also
Streaming Overview
Architecture and platform details
Authentication
Detailed authentication and pairing guide
Recording
Record locally while streaming