Skip to main content
Module: LCKStreaming | Version: 1.0 | Platforms: Win64, Android (Quest)

What is LCKStreaming?

LCKStreaming adds live streaming to your Unreal Engine project. It connects to the LIV backend to authenticate users, resolve streaming targets, and push video/audio over RTMP to YouTube, Twitch, or any manual RTMP endpoint. The module handles the full lifecycle: device-based authentication, streaming configuration, RTMP connection management, encoder health monitoring, and automatic bitrate selection per platform.

Architecture

The subsystem coordinates two layers: a REST API client that handles authentication, streaming config, and RTMP URL resolution, and a native RTMP bridge that muxes encoded video/audio and pushes it to the ingest server.

Module Structure

Prerequisites

All four prerequisites must be met before streaming will function. Missing any one of them causes StartStreaming() to return false silently.
  1. Enable streaming — Set bEnableStreaming = true in Project Settings → Plugins → LCK SDK → Features. Defaults to false.
  2. Valid Tracking ID — Your project must have a Tracking ID configured in LCK Developer Settings.
  3. RTMP libraries loadedlibrtmp DLLs (Win64) or librtmp.so (Android) must be present and loadable at runtime. Check FLCKStreamingModule::IsRtmpAvailable().
  4. LIV account with subscription — The end user needs a LIV account with an active streaming subscription.

Platform Support

Streaming Targets

Platform Bitrates

Bitrates are selected automatically based on the target platform and resolution.

YouTube

Twitch

Keyframe interval is fixed at 2 seconds for all targets, as required by YouTube and Twitch ingest servers.

Relationship to Recording

Streaming and recording share the same encoder pipeline. When both are active simultaneously, the streaming module piggybacks on the active recording encoder rather than creating a second one. This means you can stream and record at the same time with no additional encoding overhead.
If a recording is already in progress when StartStreaming() is called, the stream reuses the existing encoder. If no recording is active, streaming acquires its own encoder instance.

Streaming State Machine

Key Timing Constants

Delegates

The subsystem exposes seven delegates for responding to streaming lifecycle events:

Log Category

See Also

Quick Start

Get streaming in 5 minutes

Authentication

Device pairing and login flow

Streaming Subsystem API

Full API reference