截图
捕获任意 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保存至 OBS 所在机器的文件系统,而非 UE 客户端。- 如需将文件保存至 UE 所在机器,请使用
GetSourceScreenshot后在本地保存。 - 高分辨率图像的 base64 数据可能非常大,建议在预览时使用缩放捕获。
- OBS 支持 WebP 格式,但纹理转换仅支持 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);