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;
- (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
传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。