スクリーンショット
任意の 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 | ロスレス | 無視される |
シーケンサーとの統合
| アクション | 説明 |
|---|---|
SaveSourceScreenshot | タイムライン上の特定の時点でスクリーンショットを保存(TargetName と FilePath が必要) |
タイムライン駆動の OBS アクションについては シーケンサー を参照してください。
イベント
スクリーンショットのイベントはハンドラーレベルです。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);