스크린샷
임의의 OBS 소스(장면 또는 입력)의 스크린샷을 메모리의 base64 이미지 데이터로 캡처하거나(Unreal에서 사용할 UTexture2D로 변환 가능), OBS 머신의 파일 시스템에 직접 파일로 저장할 수 있습니다.
함수
| 함수 | 설명 |
|---|---|
GetSourceScreenshot(Name, Format) | 스크린샷을 base64 메모리로 캡처 |
GetSourceScreenshotByUuid(Uuid, Format) | 소스 UUID로 캡처 |
GetSourceScreenshotScaled(Name, Format, W, H, Quality) | 스케일 옵션을 지정하여 캡처 |
GetSourceScreenshotWithOptions(Request) | 요청 구조체를 통한 완전한 제어 |
SaveSourceScreenshot(Name, Path, Format) | OBS 머신 파일 시스템에 스크린샷 직접 저장 |
SaveSourceScreenshotByUuid(Uuid, Path, Format) | 소스 UUID로 저장 |
SaveSourceScreenshotScaled(Name, Path, Format, W, H, Quality) | 스케일 옵션을 지정하여 저장 |
SaveSourceScreenshotWithOptions(Request) | 요청 구조체를 통한 완전한 제어 |
GetLastScreenshotResult() | 마지막으로 캡처된 스크린샷 결과 가져오기 |
GetLastSavedResult() | 마지막으로 저장된 스크린샷 결과 가져오기 |
IsCapturePending() | 캡처 진행 중 여부 확인 |
정적 텍스처 유틸리티
캡처된 base64 이미지 데이터를 엔진 내에서 표시할 수 있는 Unreal 텍스처로 변환합니다.
| 함수 | 설명 |
|---|---|
CreateTextureFromBase64(Base64Data) | base64 이미지를 UTexture2D로 변환 |
CreateTextureFromScreenshotResult(Result) | 스크린샷 결과를 텍스처로 변환 |
DecodeBase64ImageData(Base64, OutBytes, OutFormat) | base64를 원시 바이트로 디코드 |
CreateTextureFromBytes(ImageBytes) | 원시 이미지 데이터로 텍스처 생성 |
이미지 형식
| 형식 | 유형 | 품질 설정 |
|---|---|---|
png | 무손실 | 무시됨 |
jpg | 손실 | 0 ~ 100 |
webp | 손실 | 0 ~ 100 |
bmp | 무손실 | 무시됨 |
Sequencer 연동
| 동작 | 설명 |
|---|---|
SaveSourceScreenshot | 특정 타임라인 시점에 스크린샷 저장 (TargetName + FilePath 필요) |
타임라인 기반 OBS 동작에 대한 자세한 내용은 Sequencer를 참조하세요.
이벤트
스크린샷 이벤트는 핸들러 수준에서 동작합니다. OBS Component가 직접 바인딩합니다. Subsystem만 단독으로 사용하는 경우에는 GetClient()->GetScreenshots()를 통해 접근하세요.
OnScreenshotCaptured(Result): 스크린샷이 메모리에 캡처됨 (base64 데이터 포함)OnScreenshotSaved(SourceName, FilePath): OBS 머신에 스크린샷이 파일로 저장됨
참고 사항
- 스크린샷은 장면과 입력 모두에서 동작합니다 (모든 OBS 소스).
SaveSourceScreenshot은 UE 클라이언트가 아닌 OBS 머신의 파일 시스템에 저장됩니다.- UE 머신에 파일이 필요한 경우
GetSourceScreenshot으로 캡처 후 로컬에 저장하세요. - 고해상도 이미지의 경우 base64 데이터가 매우 커질 수 있으므로, 미리보기에는 스케일을 적용한 캡처 사용을 권장합니다.
- WebP 형식은 OBS에서 지원되지만, 텍스처 변환은 PNG, JPEG, BMP만 지원합니다.
예제
// Capture the current program scene and turn it into a texture.
Subsystem->GetSourceScreenshotScaled(TEXT("Gameplay"), TEXT("png"), 640, 360, -1);
// In your OnScreenshotCaptured handler:
UTexture2D* Texture =
UInhyeongOBSSubsystem::CreateTextureFromScreenshotResult(Result);