XAppCaptureReadLocalStream
XAppCaptureRecordTimespan에 대한 이전 호출에서 생성된 .mp4 파일의 내용을 읽습니다.
구문
HRESULT XAppCaptureReadLocalStream(
XAppCaptureLocalStreamHandle handle,
size_t startPosition,
uint32_t bytesToRead,
uint8_t * buffer,
uint32_t * bytesWritten
)
매개 변수
handle _In_
형식: XAppCaptureLocalStreamHandle
이전에 XAppCaptureRecordTimespan에서 만든 로컬 기록 파일을 처리합니다.
startPosition _In_
형식: size_t
스트림의 시작 위치입니다.
bytesToRead _In_
형식: uint32_t
읽을 바이트 수입니다.
buffer _Out_writes_to_(bytesToRead, *bytesWritten)
형식: uint8_t *
스트림 데이터를 쓸 버퍼입니다.
bytesWritten _Out_
형식: uint32_t *
함수 완료 시 제공된 버퍼에 기록된 바이트 수를 포함합니다.
반환 값
형식: HRESULT
함수 결과입니다.
설명
한 번에 최대 두 개의 기록이 존재할 수 있습니다. 스트림이 닫히면 파일이 삭제됩니다. 게임이 종료되면 오래된 파일을 방지하기 위해 녹화가 자동으로 삭제됩니다.
XAppCaptureLocalResult를 가져오는 방법은 XAppCaptureRecordTimespan을 참조하세요.
const int MAX_DATA = 1024;
XAppCaptureLocalResult localResult = {0};
XAppCaptureLocalStreamHandle localHandle = nullptr;
HANDLE file = INVALID_HANDLE_VALUE;
uint8_t buffer[MAX_DATA];
/* 5 seconds, for example. You should call XAppCaptureGetVideoCaptureSettings() to ensure there's sufficient duration available */
uint64_t durationInMs = 5000;
size_t totalBytesRead = 0;
size_t fileSize = 0;
XAppCaptureRecordTimespan(nullptr, durationInMs, &localResult);
localHandle = localResult.clipHandle;
fileSize = localResult.fileSizeInBytes;
/* T:\ is one example of a writeable local directory. Be aware that the T:\ drive can be invalidated on suspend or resume, and as such it's better to use PLS */
file = CreateFileA("T:\\MyFile.mp4", GENERIC_READ | GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
while (totalBytesRead < fileSize)
{
uint32_t bytesRead = 0;
uint32_t bytesWritten = 0;
if (SUCCEEDED(XAppCaptureReadLocalStream(localHandle, totalBytesRead, sizeof(buffer), buffer, &bytesRead)))
{
WriteFile(file, buffer, bytesRead, &bytesWritten, NULL);
totalBytesRead += bytesRead;
}
else
{
break;
}
}
/* You must always close a local stream handle even if nothing was read in */
XAppCaptureCloseLocalStream(localHandle);
요구 사항
헤더: XAppCapture.h
라이브러리: xgameruntime.lib
지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔