> ## Documentation Index
> Fetch the complete documentation index at: https://docs.liv.tv/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> How to set up the LIV Camera Kit (LCK) SDK in Unreal Engine and start recording video, capturing photos, and using Blueprints in minutes.

Get the LCK SDK running in your Unreal Engine project with basic recording, photo capture, and Blueprint support.

## Prerequisites

<Check>
  Unreal Engine 5.4+
</Check>

<Check>
  Visual Studio 2022 (Windows)
</Check>

<Check>
  Android SDK/NDK (for Android builds)
</Check>

<Check>
  C++ project (Blueprint-only projects require C++ conversion)
</Check>

<Check>
  Your app has microphone permissions
</Check>

## Installation

<Steps>
  <Step title="Enable Required Plugins">
    Enable the following plugins in your project:

    **Required:**

    * `LCK` - Core recording SDK

    **Optional (based on your needs):**

    * `LCKUI` - 3D UI components
    * `LCKTablet` - Virtual tablet interface
    * `LCKUnrealAudio` - Unreal audio capture
    * `LCKVivox` - Vivox voice chat capture
    * `LCKOboe` - Android microphone (Android only)

    **Optional Audio Middleware (requires external plugins):**

    * `LCKFMOD` - FMOD audio capture (requires [FMODStudio plugin](https://www.fmod.com/download))
    * `LCKWwise` - Wwise audio capture (requires [Wwise plugin](https://www.audiokinetic.com/download/))
  </Step>

  <Step title="Configure Module Dependencies">
    Add to your module's `.Build.cs`:

    ```csharp theme={null}
    public class YourModule : ModuleRules
    {
        public YourModule(ReadOnlyTargetRules Target) : base(Target)
        {
            PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

            PublicDependencyModuleNames.AddRange(new string[] {
                "Core",
                "CoreUObject",
                "Engine",
                "LCKCore",
                "LCKAudio"
            });

            // Optional: Add UI support
            PrivateDependencyModuleNames.AddRange(new string[] {
                "LCKUI",
                "LCKTablet"
            });
        }
    }
    ```
  </Step>

  <Step title="Configure Project Settings">
    Navigate to **Project Settings > Plugins > LCK SDK** and configure:

    | Setting         | Description                             | Required |
    | --------------- | --------------------------------------- | -------- |
    | **Tracking ID** | UUID v4 format identifier for analytics | Yes      |
    | **Game Name**   | Display name for your application       | Yes      |
    | **Profile\_SD** | 1280x720 recording profile settings     | No       |
    | **Profile\_HD** | 1920x1080 recording profile settings    | No       |
  </Step>
</Steps>

## Basic Recording

### Get the LCK Service

```cpp theme={null}
#include "LCKSubsystem.h"
#include "LCKService.h"

// From any actor with world context
ULCKSubsystem* Subsystem = GetWorld()->GetSubsystem<ULCKSubsystem>();
ULCKService* Service = Subsystem->GetService();
```

### Configure Recording Parameters

```cpp theme={null}
// Apply recording settings
Service->ApplyRecordingSettings(
    1920,       // Width
    1080,       // Height
    30,         // Framerate
    8000000,    // Video bitrate (8 Mbps)
    256000,     // Audio bitrate (256 Kbps)
    48000       // Sample rate
);
```

### Register Scene Capture

```cpp theme={null}
// Create or reference your scene capture component
USceneCaptureComponent2D* CaptureComponent = /* your capture component */;

// Register with the service (provide a unique name)
Service->RegisterCaptureComponent(TEXT("MainCapture"), CaptureComponent);
```

### Start Recording

```cpp theme={null}
// Subscribe to events first
Service->OnRecordingSaveFinished.AddDynamic(this, &AMyActor::HandleSaveFinished);
Service->OnRecordingError.AddDynamic(this, &AMyActor::HandleRecordingError);

// Start recording
Service->StartRecording();
```

### Stop Recording

```cpp theme={null}
// Stop recording
Service->StopRecording();

// Progress is reported via delegate
Service->OnRecordingSaveProgress.AddDynamic(this, &AMyActor::HandleSaveProgress);

void AMyActor::HandleSaveProgress(float Progress)
{
    UE_LOG(LogTemp, Log, TEXT("Save progress: %.1f%%"), Progress * 100.0f);
}

void AMyActor::HandleSaveFinished(bool bSuccess)
{
    UE_LOG(LogTemp, Log, TEXT("Recording saved: %s"), bSuccess ? TEXT("Yes") : TEXT("No"));
}
```

<Tip>
  For direct async control, use `ULCKRecorderSubsystem` which provides `StartRecordingAsync()` and `StopRecordingAsync()` methods with delegate callbacks.
</Tip>

## Photo Capture

```cpp theme={null}
// Take a single photo
Service->TakePhoto();
```

## Blueprint Usage

All major functions are exposed to Blueprints:

| Function                      | Category      | Description                   |
| ----------------------------- | ------------- | ----------------------------- |
| `GetService`                  | LCK Subsystem | Get the LCK service instance  |
| `StartRecording`              | Recording     | Begin video recording         |
| `StopRecording`               | Recording     | End video recording           |
| `TakePhoto`                   | Recording     | Capture single frame          |
| `IsRecording`                 | State         | Check if currently recording  |
| `GetCurrentRecordingDuration` | State         | Get recording time in seconds |

## Next Steps

<CardGroup cols={2}>
  <Card title="Installation" icon="download" href="/unreal/installation">
    Full plugin setup and platform configuration
  </Card>

  <Card title="Recording" icon="circle-dot" href="/unreal/core-sdk/recording">
    Advanced recording options
  </Card>

  <Card title="Live Streaming" icon="rectangle-barcode" href="/unreal/core-sdk/encoding">
    Learn about how LIV encodes audio video
  </Card>

  <Card title="Audio" icon="volume-high" href="/unreal/audio">
    Audio integration details
  </Card>
</CardGroup>
