Documentation
All
API Reference
Agora Java API Reference for Android
Agora Java API Reference for Android
◆ onCaptureVideoFrame()
abstract boolean io.agora.rtc.IVideoFrameObserver.onCaptureVideoFrame |
( |
VideoFrame |
videoFrame | ) |
|
|
abstract |
Gets the video data captured by the local camera.
- Since
- v3.4.5
After you successfully register the raw video frame observer, the SDK triggers this callback each time a video frame is received. You can get the video data captured by the local camera in videoFrame
and then process the video data according to your scenario. After processing, you can use videoFrame to pass the processed video data back to the SDK.
- Note
- If you get the video data in RGBA color encoding format, Agora does not support using this callback to send the processed data in RGBA color encoding format back to the SDK.
- The video data obtained through this callback has not undergone preprocessing, such as watermarking, cropping content, rotating, or image enhancement.
- Parameters
-
- Returns
true
: If the video frame processing fails, the video frame is not passed back to the SDK.
false
: If the video frame processing fails, the video frame is still passed back to the SDK.
◆ onPreEncodeVideoFrame()
boolean io.agora.rtc.IVideoFrameObserver.onPreEncodeVideoFrame |
( |
VideoFrame |
videoFrame | ) |
|
Gets the local pre-encoded video data.
- Since
- v3.4.5
After you successfully register the raw video frame observer and use getObservedFramePosition to set the observation POSITION_PRE_ENCODER (1 << 2)
, the SDK triggers this callback each time a video frame is received. You can get the local pre-encoded video data in videoFrame
and then process the video data according to your scenario. After processing, you can use videoFrame
to pass the processed video data back to the SDK.
- Note
- If you get the video data in RGBA color encoding format, Agora does not support using this callback to send the processed data in RGBA color encoding format back to the SDK.
- The video data obtained through this callback has not undergone preprocessing, such as watermarking, cropping content, rotating, or image enhancement.
- Parameters
-
- Returns
true
: If the video frame processing fails, the video frame is not passed back to the SDK.
false
: If the video frame processing fails, the video frame is still passed back to the SDK.
◆ onRenderVideoFrame()
abstract boolean io.agora.rtc.IVideoFrameObserver.onRenderVideoFrame |
( |
int |
uid, |
|
|
VideoFrame |
videoFrame |
|
) |
| |
|
abstract |
Gets the incoming remote video data.
- Since
- v3.4.5
After you successfully register the raw video frame and set the return value of isMultipleChannelFrameWanted as false
, the SDK triggers this callback each time a video frame is received. You can get the incoming remote video data in videoFrame
and then process the video data according to your scenario. After processing, you can use videoFrame
to pass the processed video data back to the SDK.
- Note
- If you get the video data in RGBA color encoding format, Agora does not support using this callback to send the processed data in RGBA color encoding format back to the SDK.
- Parameters
-
uid | The user ID of the remote user. |
videoFrame | The video frame. See VideoFrame. |
- Returns
true
: If the video frame processing fails, the video frame is not passed back to the SDK.
false
: If the video frame processing fails, the video frame is still passed back to the SDK.
◆ getVideoFormatPreference()
int io.agora.rtc.IVideoFrameObserver.getVideoFormatPreference |
( |
| ) |
|
Sets the format of the raw video data output by the SDK.
- Since
- v3.4.5
If you want to get raw video data in a color encoding format other than YUV 420, you need to implement the getVideoFormatPreference callback in the IVideoFrameObserver class. After you successfully register the raw video frame observer, the SDK triggers this callback each time a video frame is received. You need to set the desired color encoding format of the video data in the return value of this callback.
- Returns
- The color encoding format of the raw video data output by the SDK. The following values are supported:
FRAME_TYPE_YUV420 (0)
: (Default) YUV 420
FRAME_TYPE_YUV422 (1)
: YUV 422
FRAME_TYPE_RGBA (2)
: RGBA
◆ getRotationApplied()
boolean io.agora.rtc.IVideoFrameObserver.getRotationApplied |
( |
| ) |
|
Sets whether to rotate the raw video data output by the SDK.
- Since
- v3.4.5
If you want to get raw video data that has been rotated according to the value of rotation in VideoFrame, you need to implement the getRotationApplied callback in the IVideoFrameObserver class. After you successfully register the raw video frame observer, the SDK triggers this callback each time a video frame is received. You need to set whether to rotate the observed raw video data in the return value of this callback.
- Note
- This function supports video data in RGBA and YUV 420 color encoding formats only.
- Returns
- Whether to rotate the raw video data output by the SDK:
true
: Rotate the raw video data.
false
: (Default) Do not rotate the raw video data.
◆ getMirrorApplied()
boolean io.agora.rtc.IVideoFrameObserver.getMirrorApplied |
( |
| ) |
|
Sets whether to mirror the raw video data output by the SDK.
- Since
- v3.4.5
If you want to get the mirrored raw video data, you need to implement the getMirrorApplied callback in the IVideoFrameObserver class. After you successfully register the raw video frame observer, the SDK triggers this callback each time a video frame is received. You need to set whether to mirror the observed raw video data in the return value of this callback.
- Note
- This function supports video data in RGBA and YUV 420 color encoding formats only.
- Returns
- Whether to mirror the raw video data output by the SDK:
true
: Mirror the raw video data.
false
: (Default) Do not mirror the raw video data.
◆ getObservedFramePosition()
int io.agora.rtc.IVideoFrameObserver.getObservedFramePosition |
( |
| ) |
|
Sets the video observation positions.
- Since
- v3.4.5
After you successfully register the raw video frame observer, the SDK uses the getObservedFramePosition callback to determine at each specific video-frame processing node whether to trigger the following callbacks:
You can set the position or positions that you want to observe by modifying the return value of getObservedFramePosition according to your scenario.
- Note
- To observe multiple positions, use | (the OR operator).
- The default return value of this callback is
POSITION_POST_CAPTURER (1 << 0)
and POSITION_PRE_RENDERER (1 << 1)
.
- To conserve system resources of the device, you can reduce the number of observation positions appropriately according to your scenario.
- Returns
- The bit mask of the observation positions. The following values are supported:
POSITION_POST_CAPTURER (1 << 0)
: (Default) The position to observe the video data captured by the local camera, which corresponds to the onCaptureVideoFrame callback.
POSITION_PRE_RENDERER (1 << 1)
: (Default) The position to observe the incoming remote video data, which corresponds to the onRenderVideoFrame or onRenderVideoFrameEx callback.
POSITION_PRE_ENCODER (1 << 2)
: The position to observe the local pre-encoded video data, which corresponds to the onPreEncodeVideoFrame callback.
◆ isMultipleChannelFrameWanted()
boolean io.agora.rtc.IVideoFrameObserver.isMultipleChannelFrameWanted |
( |
| ) |
|
Sets whether the SDK outputs remote video data received in multiple channels.
- Since
- v3.4.5
In a multi-channel (RtcChannel) scenario, if you want to get the remote video data received in multiple channels, you need to implement the isMultipleChannelFrameWanted callback in the IVideoFrameObserver class and set the return value of this callback to true. The SDK triggers the onRenderVideoFrameEx callback each time a video frame is received, from which you can get the expected multi-channel video data.
- Note
- The SDK chooses to trigger either the onRenderVideoFrame or onRenderVideoFrameEx callback depending on the return value that you set in the isMultipleChannelFrameWanted callback. Agora recommends that you set the return value as true in a multi-channel scenario.
- Returns
- Whether the SDK outputs remote video data received in multiple channels:
true
: The SDK uses onRenderVideoFrameEx to output remote video data received in multiple channels.
false
: (Default) The SDK uses onRenderVideoFrame to output remote video data received in a single channel.
◆ onRenderVideoFrameEx()
boolean io.agora.rtc.IVideoFrameObserver.onRenderVideoFrameEx |
( |
String |
channelId, |
|
|
int |
uid, |
|
|
VideoFrame |
videoFrame |
|
) |
| |
Gets the remote video data received in multiple channels.
- Since
- v3.4.5
After you successfully register the raw video frame observer and set the return value of isMultipleChannelFrameWanted as true
, the SDK triggers this callback each time a video frame is received. You get the remote video data received in multiple channels in videoFrame
and then process the video data according to your scenario. After processing, you can pass the processed video data back to the SDK.
- Note
- If you get the video data in RGBA color encoding format, Agora does not support using this callback to send the processed data in RGBA color encoding format back to the SDK.
- Parameters
-
channelId | The channel name. |
uid | The user ID of the remote user. |
videoFrame | The video frame. See VideoFrame. |
- Returns
true
: If the video frame processing fails, the video frame is not passed back to the SDK.
false
: If the video frame processing fails, the video frame is still passed back to the 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 |
1 << 0
: (Default) The position to observe the video data captured by the local camera, which corresponds to the onCaptureVideoFrame callback.
◆ 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 |
1 << 2
: The position to observe the local pre-encoded video data, which corresponds to the onPreEncodeVideoFrame callback.