XAppCaptureStartUserRecord
按照用户的触发方式进行录制。 如果玩家在录制过程中暂停/限制游戏,录制将停止。 录制内容保存在用户分区中。 捕获设置基于 GameDVR 设置。 达到并发录制限制后,需要先调用 XAppCaptureStopUserRecord,然后才能开始另一次录制。 将来的版本中将添加对此 API 的 Windows 支持。
语法
HRESULT XAppCaptureStartUserRecord(
XUserHandle requestingUser,
uint32_t localIdBufferLength,
char* localIdBuffer
)
参数
requestingUser _In_
类型:XUserHandle
表示请求录制的用户的句柄。
localIdBufferLength _In_
类型:uint32_t
接收本地录制 ID 的缓冲区的长度。
localIdBuffer _Out_
类型:char*
包含指定正在进行的录制操作的本地 ID 的缓冲区。
返回值
类型:HRESULT
函数结果。 有关非S_OK
返回值,请参阅 XAppCapture 错误代码。
备注
成功完成函数后,localIdOfUserRecording 包含录制的本地 ID,必须存储该 ID 才能使用 XAppCaptureStopUserRecord 停止特定录制。
char localIdOfUserRecording[APPCAPTURE_MAX_LOCALID_LENGTH] = { '\0' };
XAppCaptureVideoCaptureSettings captureSettings = { 0 };
if (FAILED_LOG(XAppCaptureGetVideoCaptureSettings(&captureSettings)))
{
return;
}
if (captureSettings.isCaptureByGamesAllowed)
{
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = g_taskQueue;
asyncBlock->callback = [](XAsyncBlock* ab)
{
auto asyncBlock = std::unique_ptr<XAsyncBlock>(ab);
XUserHandle user = nullptr;
auto scopeExit = wil::scope_exit([&]()
{
if (user != nullptr)
{
XUserCloseHandle(user);
}
});
if (FAILED_LOG(XUserAddResult(asyncBlock.get(), &user)))
{
return;
}
if (FAILED_LOG(XAppCaptureStartUserRecord(user, ARRAYSIZE(localIdOfUserRecording), localIdOfUserRecording)))
{
return;
}
appLog.AddLog("Recording started: localId = %s\n", localIdOfUserRecording);
};
if (SUCCEEDED_LOG(XUserAddAsync(
XUserAddOptions::AddDefaultUserAllowingUI,
asyncBlock.get())))
{
// Once started, release the pointer
asyncBlock.release();
}
}
要求
头文件:XAppCapture.h
库:xgameruntime.lib
支持的平台:Xbox One 系列主机和 Xbox Series 主机