文档中心
互动直播 (Legacy)
API 参考
Agora Java API Reference for Android
Agora Java API Reference for Android
IVideoFrameObserver
接口,用于实现原始视频数据回调事件。
◆ onCaptureVideoFrame()
abstract boolean io.agora.rtc.IVideoFrameObserver.onCaptureVideoFrame |
( |
VideoFrame |
videoFrame | ) |
|
|
abstract |
获取本地采集的视频数据。
成功注册原始视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调。 你可以在 videoFrame
中获取本地采集的后的视频数据,并根据场景需要,对视频数据进行处理。 完成处理后,你可以通过 videoFrame
将处理后的视频数据传回 SDK。
- 注解
- 如果你获取到的视频数据类型为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
- 此处获取的视频数据未经过前处理,如水印、裁剪、旋转和美颜等。
- 参数
-
- 返回
- true: 设置 SDK 接收视频帧。
- false: 设置 SDK 丢弃视频帧。
◆ onPreEncodeVideoFrame()
boolean io.agora.rtc.IVideoFrameObserver.onPreEncodeVideoFrame |
( |
VideoFrame |
videoFrame | ) |
|
获取本地编码前的视频数据。
成功注册原始视频数据观测器且通过 getObservedFramePosition 设置观测 POSITION_PRE_ENCODER (1 << 2)
后,SDK 会在捕捉到每个视频帧时触发该回调。 你可以在 videoFrame
中获取本地编码前的视频数据,并根据场景需要,对视频数据进行处理。 完成处理后,你可以通过 videoFrame
将处理后的视频数据传回 SDK。
- 注解
- 如果你获取到的视频数据类型为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
- 此处获取的视频数据已经过前处理,如裁剪、旋转和美颜等。
- 参数
-
- 返回
- true: 设置 SDK 接收视频帧。
- false: 设置 SDK 丢弃视频帧。
◆ onRenderVideoFrame()
abstract boolean io.agora.rtc.IVideoFrameObserver.onRenderVideoFrame |
( |
int |
uid, |
|
|
VideoFrame |
videoFrame |
|
) |
| |
|
abstract |
获取接收到的远端视频数据。
成功注册原始视频数据观测器且将 isMultipleChannelFrameWanted 的返回值设为 false
后, SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame
中获取接收到的远端视频数据,并根据场景需要, 对视频数据进行处理。完成处理后,你可以通过 videoFrame
将处理后的视频数据传回 SDK。
- 参数
-
- 返回
- true: 设置 SDK 接收视频帧。
- false: 设置 SDK 丢弃视频帧。
◆ getVideoFormatPreference()
int io.agora.rtc.IVideoFrameObserver.getVideoFormatPreference |
( |
| ) |
|
设置 SDK 输出的原始视频数据格式。
如果你希望获取 YUV 420 格式以外的原始视频数据,你需要在 IVideoFrameObserver 类中实现 getVideoFormatPreference
回调。 成功注册原始视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置期望的视频数据格式。
- 返回
- SDK 输出的原始视频数据格式。支持如下取值:
FRAME_TYPE_YUV420 (0)
:(默认)YUV 420
FRAME_TYPE_YUV422 (1)
: YUV 422
FRAME_TYPE_RGBA (2)
: RGBA
◆ getRotationApplied()
boolean io.agora.rtc.IVideoFrameObserver.getRotationApplied |
( |
| ) |
|
设置是否旋转 SDK 输出的原始视频数据。
如果你希望获取的原始视频数据已根据 VideoFrame
中的旋转信息 rotation
进行旋转, 你需要在 IVideoFrameObserver 类中实现 getRotationApplied
回调。 成功注册原始视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对观测到的原始视频数据进行旋转。
- 注解
- 该功能仅支持 RGBA 和 YUV 420 格式的视频数据。
- 返回
- 是否旋转 SDK 输出的原始视频数据:
◆ getMirrorApplied()
boolean io.agora.rtc.IVideoFrameObserver.getMirrorApplied |
( |
| ) |
|
设置是否镜像 SDK 输出的原始视频数据。
如果你希望获取到镜像过的原始视频数据,你需要在 IVideoFrameObserver 类中实现 getMirrorApplied
回调。 成功注册原始视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对观测到的原始视频数据进行镜像。
- 注解
- 该功能仅支持 RGBA 和 YUV 420 格式的视频数据。
- 返回
- 是否镜像 SDK 输出的原始视频数据:
◆ getObservedFramePosition()
int io.agora.rtc.IVideoFrameObserver.getObservedFramePosition |
( |
| ) |
|
设置视频观测位置。
成功注册原始视频数据观测器后,SDK 会在每个特定的视频帧处理节点通过 getObservedFramePosition
回调来判断是否触发如下回调:
你可以根据场景需求,通过修改 getObservedFramePosition
的返回值,设置你需要观测的某个或多个位置。
- 注解
- 观测多个位置时,需要使用 '|'(或)运算符。
- 该回调的返回值默认为
POSITION_POST_CAPTURER (1 << 0)
和 POSITION_PRE_RENDERER (1 << 1)
。
- 为降低设备耗能,你可以根据实际需求适当减少观测位置。
- 返回
- 观测位置的 bit mask。支持如下取值:
POSITION_POST_CAPTURER (1 << 0)
:(默认)该位置可观测本地采集的视频数据,对应 onCaptureVideoFrame
回调。
POSITION_PRE_RENDERER (1 << 1)
:(默认)该位置可观测接收的远端视频数据,对应 onRenderVideoFrame
或 onRenderVideoFrameEx
回调。
POSITION_PRE_ENCODER (1 << 2)
: 该位置可观测本地编码前的视频数据,对应 onPreEncodeVideoFrame
回调。
◆ isMultipleChannelFrameWanted()
boolean io.agora.rtc.IVideoFrameObserver.isMultipleChannelFrameWanted |
( |
| ) |
|
◆ onRenderVideoFrameEx()
boolean io.agora.rtc.IVideoFrameObserver.onRenderVideoFrameEx |
( |
String |
channelId, |
|
|
int |
uid, |
|
|
VideoFrame |
videoFrame |
|
) |
| |
获取多个频道内接收到的远端视频数据。
成功注册原始视频数据观测器且将 isMultipleChannelFrameWanted 的返回值设为 true
后, SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame
中获取多个频道内接收到的远端视频数据,并根据场景需要,对视频数据进行处理。 完成处理后,你可以通过 videoFrame
将处理后的视频数据传回 SDK。
- 参数
-
channelId | 频道名。 |
uid | 远端用户 ID |
videoFrame | 视频数据。详见 VideoFrame。 |
- 返回
- true: 设置 SDK 接收视频帧。
- false: 设置 SDK 丢弃视频帧。
◆ FRAME_TYPE_YUV420
final int io.agora.rtc.IVideoFrameObserver.FRAME_TYPE_YUV420 = 0 |
|
static |
◆ FRAME_TYPE_YUV422
final int io.agora.rtc.IVideoFrameObserver.FRAME_TYPE_YUV422 = 1 |
|
static |
◆ FRAME_TYPE_RGBA
final int io.agora.rtc.IVideoFrameObserver.FRAME_TYPE_RGBA = 2 |
|
static |
◆ POSITION_POST_CAPTURER
final int io.agora.rtc.IVideoFrameObserver.POSITION_POST_CAPTURER = 1 << 0 |
|
static |
◆ POSITION_PRE_RENDERER
final int io.agora.rtc.IVideoFrameObserver.POSITION_PRE_RENDERER = 1 << 1 |
|
static |
◆ POSITION_PRE_ENCODER
final int io.agora.rtc.IVideoFrameObserver.POSITION_PRE_ENCODER = 1 << 2 |
|
static |