XAppCaptureStartUserRecord

按照用户的触发方式进行录制。 如果玩家在录制过程中暂停/限制游戏,录制将停止。 录制内容保存在用户分区中。 捕获设置基于 GameDVR 设置。 达到并发录制限制后,需要调用 XAppCaptureStopUserRecordXAppCaptureCancelUserRecord ,然后才能开始另一个录制。 将来的版本中将添加对此 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,并且必须存储以停止 使用 XAppCaptureStopUserRecordXAppCaptureCancelUserRecord 的特定录制。

注意

当分配的空间已满时,将删除较旧的剪辑,以便为新剪辑腾出空间。 使用 PLS (持久本地存储) 、连接的存储 (例如 XGameSaveXGameSaveFiles) 或类似的存储系统,以便将剪辑保留一定时间段。

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 主机

另请参阅

XAppCapture 成员