Skip to content

Desuq Cafe

文档菜单

此翻译可能落后于最新的英文版本。 查看英文版

截图

捕获任意 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);

另请参阅