# VideoFrame (/zh-CN/api-reference/rtc/unreal-cpp/class-videoframe)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="class_videoframe__prototype"></a>

```cpp
struct VideoFrame {
  VideoFrame():
  type(VIDEO_PIXEL_DEFAULT),
  width(0),
  height(0),
  yStride(0),
  uStride(0),
  vStride(0),
  yBuffer(NULL),
  uBuffer(NULL),
  vBuffer(NULL),
  rotation(0),
  renderTimeMs(0),
  avsync_type(0),
  metadata_buffer(NULL),
  metadata_size(0),
  sharedContext(0),
  textureId(0),
  d3d11Texture2d(NULL),
  alphaBuffer(NULL),
  alphaStitchMode(NO_ALPHA_STITCH),
  pixelBuffer(NULL),
  metaInfo(NULL){
    memset(matrix, 0, sizeof(matrix));
  }

  VIDEO_PIXEL_FORMAT type;

  int width;

  int height;

  int yStride;

  int uStride;

  int vStride;

  uint8_t* yBuffer;

  uint8_t* uBuffer;

  uint8_t* vBuffer;

  int rotation;

  int64_t renderTimeMs;

  int avsync_type;

  uint8_t* metadata_buffer;

  int metadata_size;

  void* sharedContext;

  int textureId;

  void* d3d11Texture2d;

  float matrix[16];

  uint8_t* alphaBuffer;

  ALPHA_STITCH_MODE alphaStitchMode;

  void* pixelBuffer;

  IVideoFrameMetaInfo* metaInfo;

  ColorSpace colorSpace;
};
```

<a id="class_videoframe__detailed_desc"></a>

### 详情 [#详情]

缓冲区给出的是指向指针的指针，该接口不能修改缓冲区的指针，只能修改缓冲区的内容。

<a id="class_videoframe__parameters"></a>

## 属性 [#属性]

<ParameterList>
<a id="type"></a>
<Parameter name="type">

像素格式。详见 [VIDEO_PIXEL_FORMAT](/zh-CN/api-reference/rtc/unreal-cpp/enum-videopixelformat)。

</Parameter>
<a id="width"></a>
<Parameter name="width">

视频像素宽度。

</Parameter>
<a id="height"></a>
<Parameter name="height">

视频像素高度。

</Parameter>
<a id="ystride"></a>
<Parameter name="yStride">

对 YUV 数据，表示 Y 缓冲区的行跨度；对 RGBA 数据，表示总的数据长度。

:::caution
注意： 在处理视频数据时，需根据该参数处理每行像素数据之间的偏移量，否则可能导致图像失真。
:::

</Parameter>
<a id="ustride"></a>
<Parameter name="uStride">

对 YUV 数据，表示 U 缓冲区的行跨度；对 RGBA 数据，值为 0。

:::caution
注意： 在处理视频数据时，需根据该参数处理每行像素数据之间的偏移量，否则可能导致图像失真。
:::

</Parameter>
<a id="vstride"></a>
<Parameter name="vStride">

对 YUV 数据，表示 V 缓冲区的行跨度；对 RGBA 数据，值为 0。

:::caution
注意： 在处理视频数据时，需根据该参数处理每行像素数据之间的偏移量，否则可能导致图像失真。
:::

</Parameter>
<a id="ybuffer"></a>
<Parameter name="yBuffer">

对 YUV 数据，表示 Y 缓冲区的指针；对 RGBA 数据，表示数据缓冲区。

</Parameter>
<a id="ubuffer"></a>
<Parameter name="uBuffer">

对 YUV 数据，表示 U 缓冲区的指针；对 RGBA 数据，值为空。

</Parameter>
<a id="vbuffer"></a>
<Parameter name="vBuffer">

对 YUV 数据，表示 V 缓冲区的指针；对 RGBA 数据，值为空。

</Parameter>
<a id="rotation"></a>
<Parameter name="rotation">

在渲染视频前设置该帧的顺时针旋转角度，目前支持 0 度、90 度、180 度，和 270 度。

</Parameter>
<a id="rendertimems"></a>
<Parameter name="renderTimeMs">

视频帧被渲染时的 Unix 时间戳（毫秒）。该时间戳可用于指导渲染视频帧。该参数为必填。

</Parameter>
<a id="avsync_type"></a>
<Parameter name="avsync_type">

保留参数。

</Parameter>
<a id="metadata_buffer"></a>
<Parameter name="metadata_buffer">

该参数仅适用于 Texture 格式的视频数据。指 MetaData 的数据缓冲区，默认值为 `NULL`。

</Parameter>
<a id="metadata_size"></a>
<Parameter name="metadata_size">

该参数仅适用于 Texture 格式的视频数据。指 MetaData 的大小，默认值为 `0`。

</Parameter>
<a id="sharedcontext"></a>
<Parameter name="sharedContext">

该参数仅适用于 Texture 格式的视频数据。EGL Context。

</Parameter>
<a id="textureid"></a>
<Parameter name="textureId">

该参数仅适用于 Texture 格式的视频数据。Texture ID。

</Parameter>
<a id="d3d11texture2d"></a>
<Parameter name="d3d11Texture2d">

该参数仅适用于 Windows Texture 格式的视频数据。表示一个指向 `ID3D11Texture2D` 类型对象的指针，该类型对象被视频帧所使用。

</Parameter>
<a id="matrix"></a>
<Parameter name="matrix">

该参数仅适用于 Texture 格式的视频数据。为一个输入的 4x4 变换矩阵，典型值为一个单位矩阵。

</Parameter>
<a id="colorspace"></a>
<Parameter name="colorSpace">

视频帧的色彩空间属性，默认情况下会应用 Full Range 和 BT.709 标准配置。你可以根据自定义采集、自定义渲染的业务需求进行自定义设置，详见 [VideoColorSpace](https://developer.mozilla.org/en-US/docs/Web/API/VideoColorSpace)。

</Parameter>
<a id="alphabuffer"></a>
<Parameter name="alphaBuffer">

采用人像分割算法输出的 Alpha 通道数据。该数据跟视频帧的尺寸一致，每个像素点的取值范围为 [0,255]，其中 0 代表背景；255 代表前景（人像）。

你可以通过设置该参数，实现将视频背景自渲染为各种效果，例如：透明、纯色、图片、视频等。

:::caution
注意：

- 在自定义视频渲染场景下，需确保传入的视频帧和 alphaBuffer 均为 Full Range 类型；其他类型可能导致 Alpha 数据渲染不正常。
- 请务必确保 alphaBuffer 跟视频帧的尺寸 (width × height) 完全一致，否则可能会导致 App 崩溃。
:::

</Parameter>
<a id="alphastitchmode"></a>
<Parameter name="alphaStitchMode">

当视频帧中包含 Alpha 通道数据时，设置 alphaBuffer 和视频帧的相对位置。详见 [ALPHA_STITCH_MODE](/zh-CN/api-reference/rtc/unreal-cpp/enum-alphastitchmode)。

</Parameter>
<a id="metainfo"></a>
<Parameter name="metaInfo">

视频帧中的元信息。该参数需要[联系技术支持](https://ticket.shengwang.cn/)使用。

</Parameter>
</ParameterList>
