General
What is LIV Camera Kit (LCK)?
What is LIV Camera Kit (LCK)?
What Unreal Engine versions are supported?
What Unreal Engine versions are supported?
What platforms does LCK support?
What platforms does LCK support?
How do I get the SDK?
How do I get the SDK?
Is LCK free to use?
Is LCK free to use?
What plugins are included in the SDK?
What plugins are included in the SDK?
How do I report bugs or get help?
How do I report bugs or get help?
Recording
What recording quality presets are available?
What recording quality presets are available?
| Profile | Resolution | Framerate | Video Bitrate | Audio Bitrate |
|---|---|---|---|---|
| SD | 1280 x 720 | 30 fps | 4 Mbps | 128 Kbps |
| HD | 1920 x 1080 | 60 fps | 12 Mbps | 256 Kbps |
| 2K | 2560 x 1440 | 60 fps | 20 Mbps | 320 Kbps |
| 4K | 3840 x 2160 | 60 fps | 35 Mbps | 320 Kbps |
What is the output file format?
What is the output file format?
Where are recordings and photos saved?
Where are recordings and photos saved?
Movies/{GameName} and photos to Pictures/{GameName}.Windows: Videos are saved to {User}/Videos/{GameName} and photos to {User}/Pictures/{GameName}.The {GameName} subfolder name is set in Project Settings > Plugins > LCK SDK > Game Name.Can users take screenshots?
Can users take screenshots?
Service->TakePhoto() or use the tablet UI photo button. Photos are captured as a single frame from the active scene capture component and saved as PNG to the platform’s gallery.Can I control recording programmatically?
Can I control recording programmatically?
ULCKRecorderSubsystem (a UTickableWorldSubsystem) provides full recording control:StartRecordingAsync, StopRecordingAsync) are also available with completion and progress callbacks.Can I pause and resume a recording?
Can I pause and resume a recording?
ULCKService provides PauseRecording() and ResumeRecording(). The recording state transitions to ELCKRecordingState::Paused and back to Recording when resumed. Paused segments are excluded from the final output.Does recording work in Preview mode?
Does recording work in Preview mode?
Recorder->StartPreview() to start capturing frames without encoding to disk. This is useful for live camera preview and composition. Call Recorder->StopPreview() to stop.Why is my Tracking ID required?
Why is my Tracking ID required?
Camera & Tablet
What camera modes are included?
What camera modes are included?
- Selfie — Front/back facing camera attached to the tablet. Default: 80° FOV, 50% smoothness, 2.0m follow distance, follow mode off.
- First-Person — Captures from the player’s HMD perspective. Default: 90° FOV, 75% smoothness.
- Third-Person — Follows the player at a distance via SpringArm. Default: 90° FOV, 100% smoothness, 2.0m distance, -30° pitch.
How do I spawn the tablet?
How do I spawn the tablet?
ALCKTablet (or BP_LCKTablet) in your level, or spawn it programmatically:Are camera settings saved between sessions?
Are camera settings saved between sessions?
FLCKJsonSaveHelper) that persists all user preferences: camera mode, FOV per mode, smoothness, follow distance, screen orientation, video quality, and camera facing. Settings are saved automatically on change and loaded on BeginPlay.How does VR controller interaction work?
How does VR controller interaction work?
UBoxComponent for collision detection. When a VR controller (or any collider) overlaps a button, ButtonPressed fires; when overlap ends, ButtonReleased fires. Buttons include an automatic cooldown to prevent double-triggers.Can I add custom buttons to the tablet?
Can I add custom buttons to the tablet?
Audio
What audio engines are supported?
What audio engines are supported?
| Plugin | Channels | Platforms | Notes |
|---|---|---|---|
| LCKUnrealAudio | Game + Microphone | All | Built-in, enabled by default |
| LCKFMOD | Game only | Win64, Android | Requires FMODStudio plugin |
| LCKWwise | Game only | Win64, Android | Requires Wwise plugin |
| LCKOboe | Microphone only | Android only | Low-latency via Google Oboe |
| LCKVivox | Microphone + Voice Chat | Win64, Android | Requires VivoxCore plugin |
How do I enable FMOD, Wwise, or Vivox audio?
How do I enable FMOD, Wwise, or Vivox audio?
- Install the third-party plugin (FMODStudio, Wwise, or VivoxCore)
- Set
"Enabled": truefor both the third-party plugin and the LCK audio plugin in your.uproject - Rebuild the project
Can I use Vivox alongside FMOD or Wwise?
Can I use Vivox alongside FMOD or Wwise?
What audio format do sources provide?
What audio format do sources provide?
Audio callbacks may come from different threads — how do I handle this?
Audio callbacks may come from different threads — how do I handle this?
TAtomic for all state). FMOD/Wwise copy buffers to TArrays before dispatching. The built-in FLCKAudioMix class handles thread-safe mixing internally.Platform-Specific
Is Vulkan required on Android?
Is Vulkan required on Android?
What Android permissions does LCK need?
What Android permissions does LCK need?
RECORD_AUDIO— Required for microphone capture (must be requested at runtime on Android 6.0+)WRITE_EXTERNAL_STORAGE/READ_EXTERNAL_STORAGE— Only needed on Android 9 and below; Android 10+ uses scoped storage via MediaStore automatically
What Quest devices are supported?
What Quest devices are supported?
| Device | Status | Recommended Quality |
|---|---|---|
| Meta Quest 2 | Full Support | SD (720p) or HD (1080p) @ 30fps |
| Meta Quest 3 | Full Support | HD (1080p) @ 60fps |
| Meta Quest 3s | Full Support | HD (1080p) @ 60fps |
| Meta Quest Pro | Full Support | HD (1080p) @ 60fps |
How do I reduce performance impact on Quest?
How do I reduce performance impact on Quest?
- Use SD (720p) or HD (1080p) at 30 fps
- Lower the video bitrate (4 Mbps is good for SD)
- Use
Previewmode for camera composition before recording - The hardware encoder runs on a dedicated chip and has minimal impact on game framerate — the main cost is the scene capture component rendering an extra view
Windows encoder fails to initialize — what do I check?
Windows encoder fails to initialize — what do I check?
- Verify Windows Media Foundation is available (built into Windows 10+)
- Ensure your GPU drivers are up to date (NVIDIA, AMD, or Intel)
- Check that the
AVCodecsCoreplugin is enabled in your project - Look for errors in the
LogLCKEncodinglog category
Integration & Setup
What is the difference between ULCKService and ULCKRecorderSubsystem?
What is the difference between ULCKService and ULCKRecorderSubsystem?
ULCKRecorderSubsystem (in LCKCore) is the low-level recording API — a UTickableWorldSubsystem that handles encoding, frame capture, and file output. Access it via GetWorld()->GetSubsystem<ULCKRecorderSubsystem>().ULCKService (in LCKTablet) is a high-level wrapper that adds pause/resume, error delegates (OnRecordingError, OnRecordingSaveFinished), quality profile management, and integration with the tablet UI. Access it through the tablet or create one programmatically.Use ULCKService if you want the full feature set. Use ULCKRecorderSubsystem directly if you need minimal integration without the LCKTablet plugin.What modules do I add to my Build.cs?
What modules do I add to my Build.cs?
What is the module loading order?
What is the module loading order?
- LCKVulkan (EarliestPossible) — Vulkan support layer
- Platform encoders: LCKWindowsEncoder or LCKAndroidEncoder (Default phase)
- LCKAudio (PostDefault) — Audio interface
- LCKCore (PostDefault) — Core recording subsystem
- Audio middleware plugins (LCKFMOD, LCKWwise, LCKVivox, LCKOboe) and UI plugins (LCKUI, LCKTablet) load at Default phase
LCKVulkan must load first as it provides the Vulkan context required by platform encoders. LCKAudio and LCKCore load at PostDefault to ensure platform encoders are already registered.Do I need to set up a scene capture component manually?
Do I need to set up a scene capture component manually?
USceneCaptureComponent2D automatically. If you use the recording API directly without the tablet, you need to either pass a capture component to SetupRecorder() or set one later via SetSceneCaptureComponent().What telemetry does the SDK collect?
What telemetry does the SDK collect?
errors.liv.tv. Device telemetry is enabled by default and can be disabled in Project Settings. Location telemetry is disabled by default. A valid Tracking ID is required.Troubleshooting
Recording doesn't start — what should I check?
Recording doesn't start — what should I check?
- Verify the Tracking ID is set and valid (UUID v4) in Project Settings
- Ensure a valid
USceneCaptureComponent2Dis registered - On Android, confirm Vulkan is enabled (not OpenGL ES)
- Check
LogLCKandLogLCKEncodinglog categories for errors - If using the LCKTablet plugin, subscribe to
ULCKService::OnRecordingErrorfor runtime error messages. If usingULCKRecorderSubsystemdirectly, check log categories for errors
Video is black but audio works
Video is black but audio works
- Verify the capture component is enabled and visible
- Check that a valid render target is assigned
- Ensure the capture component resolution matches the recording profile
- Try
CaptureComponent->CaptureScene()to force a manual capture
No audio in recording
No audio in recording
- Verify at least one audio plugin is enabled (LCKUnrealAudio is the default)
- On Android, ensure the
RECORD_AUDIOpermission is granted at runtime - Check that audio sources are registered: look for
"Found LCK Audio Source"in logs - If using FMOD or Wwise, disable “Game Audio” in UnrealAudio settings to avoid conflicts
How do I enable verbose logging?
How do I enable verbose logging?
DefaultEngine.ini: