AgoraVideoFrame
外部视频帧。
Java
public class AgoraVideoFrame {
public static final int FORMAT_NONE = -1;
public static final int FORMAT_TEXTURE_2D = 10;
public static final int FORMAT_TEXTURE_OES = 11;
public static final int FORMAT_I420 = 1;
public static final int FORMAT_BGRA = 2;
public static final int FORMAT_NV21 = 3;
public static final int FORMAT_RGBA = 4;
public static final int FORMAT_I422 = 16;
public static final int BUFFER_TYPE_NONE = -1;
public static final int BUFFER_TYPE_BUFFER = 1;
public static final int BUFFER_TYPE_ARRAY = 2;
public static final int BUFFER_TYPE_TEXTURE = 3;
public AgoraVideoFrame() {
format = 10;
timeStamp = 0;
stride = 0;
height = 0;
textureID = 0;
syncMode = true;
transform = null;
eglContext10 = null;
eglContext14 = null;
buf = null;
cropLeft = 0;
cropTop = 0;
cropRight = 0;
cropBottom = 0;
rotation = 0;
alphaStitchMode = 0;
}
public int format;
public long timeStamp;
public int stride;
public int height;
public int textureID;
public boolean syncMode;
public float[] transform;
public javax.microedition.khronos.egl.EGLContext eglContext10;
public android.opengl.EGLContext eglContext14;
public byte[] buf;
public int cropLeft;
public int cropTop;
public int cropRight;
public int cropBottom;
public int rotation;
public int alphaStitchMode;
@Override
public String toString() {
return "AgoraVideoFrame{"
+ "format=" + format + ", timeStamp=" + timeStamp + ", stride=" + stride
+ ", height=" + height + ", textureID=" + textureID
+ ", buf.length=" + (buf != null ? buf.length : 0) + ", cropLeft=" + cropLeft
+ ", cropTop=" + cropTop + ", cropRight=" + cropRight + ", cropBottom=" + cropBottom
+ ", rotation=" + rotation + ", alphaStitchMode=" + alphaStitchMode + '}';
}
}
format
视频数据的格式:
- 10:TEXTURE_2D。
- 11:TEXTURE_OES,通常摄像头采集的数据为这种格式。
- 1:I420。
- 3:NV21。
- 4:RGBA。
- 16:I422。
buf
视频缓冲区。
该参数仅适用于非 Texture 格式的视频数据。
stride
传入视频帧的行间距,单位为像素而不是字节。对于 Texture,该值指的是 Texture 的宽度。
height
传入视频帧的高度。
textureID
该帧的 Texture ID。该参数仅适用于 Texture 格式的视频数据。
syncMode
设置是否开启同步模式,开启后 SDK 会在 Texture 处理时进行等待。该参数仅适用于 Texture 格式的视频数据。
true
:开启同步模式。false
:不开启同步模式。
transform
Texture 帧额外的转换。该参数仅适用于 Texture 格式的视频数据。
eglContext11
EGLContext11。该参数仅适用于 Texture 格式的视频数据。
eglContext14
EGLContext14。该参数仅适用于 Texture 格式的视频数据。
alphaBuffer
采用人像分割算法输出的 Alpha 通道数据。该数据跟视频帧的尺寸一致,每个像素点的取值范围为 [0,255],其中 0 代表背景;255 代表前景(人像)。
你可以通过设置该参数,实现将视频背景自渲染为各种效果,例如:透明、纯色、图片、视频等。
注意
在自定义视频渲染场景下,需确保传入的视频帧和 alphaBuffer 均为 Full Range 类型;其他类型可能导致 Alpha 数据渲染不正常。
fillAlphaData
该参数仅适用于 BGRA 或 RGBA 格式的视频数据。设置是否提取视频帧中的 Alpha 通道数据并自动填入到 alphaBuffer 中:
true
:提取并填充 Alpha 通道数据。false
:(默认)不提取填充 Alpha 通道数据。
信息
对于 BGRA 或 RGBA 格式的视频数据,你可以任选一种方式设置 Alpha 通道数据:
- 通过将该参数设置为
true
自动填写。 - 通过 alphaBuffer 参数设置。
alphaStitchMode
当视频帧中包含 Alpha 通道数据时,设置 alphaBuffer 和视频帧的相对位置。
- VIDEO_NO_ALPHA_STITCH (0):(默认)仅视频帧,即 alphaBuffer 不和视频帧拼接。
- VIDEO_ALPHA_STITCH_UP (1):alphaBuffer 位于视频帧的上方。
- VIDEO_ALPHA_STITCH_BELOW (2):alphaBuffer 位于视频帧的下方。
- VIDEO_ALPHA_STITCH_LEFT (3):alphaBuffer 位于视频帧的左侧。
- VIDEO_ALPHA_STITCH_RIGHT (4):alphaBuffer 位于视频帧的右侧。
cropLeft
原始数据相关字段。指定左边裁剪掉的像素数量。默认为 0。
该参数仅适用于非 Texture 格式的视频数据。
cropTop
原始数据相关字段。指定顶边裁剪掉的像素数量。默认为 0。
该参数仅适用于非 Texture 格式的视频数据。
cropRight
原始数据相关字段。指定右边裁剪掉的像素数量。默认为 0。
该参数仅适用于非 Texture 格式的视频数据。
cropBottom
原始数据相关字段。指定底边裁剪掉的像素数量。默认为 0。
该参数仅适用于非 Texture 格式的视频数据。
rotation
原始数据相关字段。指定是否对传入的视频组做顺时针旋转操作,可选值为 0, 90, 180, 270。默认为 0。
timestamp
传入的视频帧的时间戳,以毫秒为单位。不正确的时间戳会导致丢帧或者音视频不同步。