AgoraVideoFrame
外部视频帧。
Objective-C
__attribute__((visibility("default"))) @interface AgoraVideoFrame : NSObject
@property(assign, nonatomic) NSInteger format;
@property(assign, nonatomic) CMTime time;
@property(assign, nonatomic) int stride DEPRECATED_MSG_ATTRIBUTE("use strideInPixels instead");
@property(assign, nonatomic) int strideInPixels;
@property(assign, nonatomic) int height;
@property(assign, nonatomic) CVPixelBufferRef _Nullable textureBuf;
@property(strong, nonatomic) IMAGE_CLASS * _Nullable image;
@property(strong, nonatomic) NSData *_Nullable dataBuf;
@property(strong, nonatomic) NSData *_Nullable alphaBuf;
@property(assign, nonatomic) AgoraAlphaStitchMode alphaStitchMode;
@property(assign, nonatomic) int cropLeft;
@property(assign, nonatomic) int cropTop;
@property(assign, nonatomic) int cropRight;
@property(assign, nonatomic) int cropBottom;
@property(assign, nonatomic) int rotation;
@property(strong, nonatomic) AgoraColorSpace *_Nullable colorSpace;
- (void)fillAlphaData;
@end
format
传入的视频帧的格式,必须指定为下面的某一个值:
- 1: I420。
- 2: BGRA。
- 3: NV21。
- 4: RGBA。
- 5: IMC2。
- 7: ARGB。
- 8: NV12。
- 12: iOS 纹理 (CVPixelBufferRef)。
- 16: I422。
dataBuf
原始数据缓冲区,该参数不用于 iOS 纹理。
textureBuf
iOS 纹理的 Buffer。
stride
传入视频帧的行间距,单位为像素而不是字节。对于 Texture,该值指的是 Texture 的宽度。 用 strideInPixels 代替。
废弃
注意
在处理视频数据时,需根据该参数处理每行像素数据之间的偏移量,否则可能导致图像失真。
strideInPixels
该帧的行跨度,即相邻两行视频帧之间的像素点数。
注意
- 该参数单位为像素,不是字节数。
- 如果视频为 Texture 格式,则将该参数设为 Texture 的宽度。
- 如果视频帧格式设为 12,则不使用该字段。
- 在处理视频数据时,需根据该参数处理每行像素数据之间的偏移量,否则可能导致图像失真。
height
传入视频帧的高度。
alphaBuf
采用人像分割算法输出的 Alpha 通道数据。该数据跟视频帧的尺寸一致,每个像素点的取值范围为 [0,255],其中 0 代表背景;255 代表前景(人像)。
你可以通过设置该参数,实现将视频背景自渲染为各种效果,例如:透明、纯色、图片、视频等。
注意
在自定义视频渲染场景下,需确保传入的视频帧和 alphaBuffer 均为 Full Range 类型;其他类型可能导致 Alpha 数据渲染不正常。
fillAlphaData
该参数仅适用于 BGRA 或 RGBA 格式的视频数据。设置是否提取视频帧中的 Alpha 通道数据并自动填入到 alphaBuffer 中:
YES
:提取并填充 Alpha 通道数据。NO
:(默认)不提取填充 Alpha 通道数据。
信息
对于 BGRA 或 RGBA 格式的视频数据,你可以任选一种方式设置 Alpha 通道数据:
- 通过将该参数设置为
YES
自动填写。 - 通过 alphaBuffer 参数设置。
alphaStitchMode
当视频帧中包含 Alpha 通道数据时,设置 alphaBuffer 和视频帧的相对位置。详见 AgoraAlphaStitchMode。
cropLeft
原始数据相关字段。指定左边裁剪掉的像素数量。默认为 0。
cropTop
原始数据相关字段。指定顶边裁剪掉的像素数量。默认为 0。
cropRight
原始数据相关字段。指定右边裁剪掉的像素数量。默认为 0。
cropBottom
原始数据相关字段。指定底边裁剪掉的像素数量。默认为 0。
rotation
原始数据相关字段。指定是否对传入的视频组做顺时针旋转操作,可选值为 0, 90, 180, 270。默认为 0。
time
传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。
colorSpace
视频帧的色彩空间属性,默认情况下会应用 Full Range 和 BT.709 标准配置。你可以根据自定义采集、自定义渲染的业务需求进行自定义设置,详见 VideoColorSpace。