Overview
LCK v1.0 is the first public release of the LIV Camera Kit SDK. This release introduces live streaming to YouTube, Twitch, and custom RTMP endpoints via the newLCKStreaming plugin, adds a Getting Started wizard for first-time setup, and improves audio quality with per-source sample rate handling. Encoding stability on Android has been significantly improved.Highlights
- Live Streaming — Stream directly to YouTube, Twitch, or custom RTMP endpoints from VR via the new
LCKStreamingplugin - Modular Streaming Architecture —
ILCKStreamingFeaturemodular feature interface for streaming integration, discoverable viaIModularFeatures - Getting Started Wizard — Editor wizard guides first-time setup with audio plugin selection and configuration
- Improved Audio Quality — Per-source sample rate handling for correct resampling across all audio plugins
- Quest 2 Optimizations — Capped HD profile to 30 fps / 8 Mbps for reliable recording on Quest 2
New Features
LCK Core SDK
LCKStreaming (New Plugin)
LCKTablet
LCKUI
Audio Plugins
Bug Fixes
Breaking Changes
-
TSharedPtr→TSharedPtr<..., ESPMode::ThreadSafe>— All encoder and module shared pointers changed to thread-safe mode. Code holdingTSharedPtr<ILCKEncoder>orTSharedPtr<ILCKEncoderFactory>must addESPMode::ThreadSafe. -
FDelegateRenderAudiosignature changed — Audio delegate gained aSampleRateparameter. Code binding toOnAudioDataDelegatemust update the callback signature. -
FOnRecordStateChage→FOnRecordStateChange— Typo fix in delegate name. -
LCKService::StartRecording()return type changed — Changed fromvoidtobooland madeBlueprintCallable. -
ULCKNotificationController::WriteLine()removed — UseShowNotification()instead. -
Telemetry structs simplified —
FLCKGeoLocation,FLCKMetaData,FLCKTelemetryData, andFLCKTelemetryPayloadwere removed fromLCKTelemetry.h.SendTelemetry(FLCKTelemetryEvent)andGetCurrentTrackingId()still work as before. -
LCKCore
Build.csdependency changes —HTTPmodule removed from public dependencies.Json,JsonUtilitiesadded as public.ToolMenusadded for editor. If your module depended onHTTPbeing transitively available through LCKCore, add it to your ownBuild.cs.
Migration Guide (v0.9.2 → v1.0)
-
Update shared pointer types — If you hold
TSharedPtr<ILCKEncoder>orTSharedPtr<ILCKEncoderFactory>, addESPMode::ThreadSafeas the second template parameter. -
Update audio delegate bindings —
OnAudioDataDelegatenow has 4 parameters (addedint32 SampleRatebetweenChannelsandSourceChannel). Update your callback signatures. -
Update
FOnRecordStateChage→FOnRecordStateChange— Fix the typo in any delegate bindings. -
Update
StartRecording()callers — Now returnsbool. Update any code that called it asvoid. -
Replace
WriteLine()calls —ULCKNotificationController::WriteLine()was removed. UseShowNotification()instead. -
Check telemetry type usage — If you used
FLCKGeoLocation,FLCKMetaData,FLCKTelemetryData, orFLCKTelemetryPayload, these structs were removed. UseFLCKTelemetryEventdirectly. -
Add
HTTPmodule if needed —HTTPwas removed from LCKCore’s public dependencies. If your module relied on it transitively, add"HTTP"to your ownBuild.cs. -
Add
LCKStreamingplugin dependency — If your project uses streaming, add theLCKStreamingplugin to your.uprojector.upluginfile. -
Enable streaming in config — Set
bEnableStreaming=trueinDefaultGame.iniunder[/Script/LCKCore.LCKDeveloperSettings]to package RTMP libraries.
Platform Support
Highlights
- PCVR Support — LCK is a single implementation for PCVR and Meta Quest Standalone
- Microphone Mute Control — New
SetMicrophoneEnabled()API for runtime mic control - Audio Config Validation — Real-time validation with editor warnings in Project Settings
- Permission Handling — Improved Android microphone permission flow with callbacks
- Developer Settings UI — Full settings panel in Project Settings with audio plugin configuration
New Features
LCK Core SDK
LCKUI
LCKTablet
Audio Plugins
Bug Fixes
Improvements
Breaking Changes
-
FLCKMetaData.Build— Changed fromint32toFString -
Mic state type — Use
ELCKMicStateenum instead ofbool
Code Reorganization
Several components were moved between modules for better organization:If you were importing these from LCKUI, update your includes to reference LCKTablet instead.
- Open Beta release