Agora Java API Reference for Android

Classes | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
io.agora.rtc2.video.VideoEncoderConfiguration Class Reference

## Classes
class | AdvanceOptions
enum | CODEC_CAP_MASK
enum | COMPRESSION_PREFERENCE
enum | DEGRADATION_PREFERENCE
enum | ENCODING_PREFERENCE
enum | FRAME_RATE
enum | MIRROR_MODE_TYPE
enum | ORIENTATION_MODE
enum | VIDEO_CODEC_TYPE
class | VideoDimensions

## Public Member Functions
| VideoEncoderConfiguration (VideoDimensions dimensions, FRAME_RATE frameRate, int bitrate, ORIENTATION_MODE orientationMode)
| VideoEncoderConfiguration (VideoDimensions dimensions, FRAME_RATE frameRate, int bitrate, ORIENTATION_MODE orientationMode, MIRROR_MODE_TYPE mirrorMode)
| VideoEncoderConfiguration (int width, int height, FRAME_RATE frameRate, int bitrate, ORIENTATION_MODE orientationMode)
| VideoEncoderConfiguration (int width, int height, FRAME_RATE frameRate, int bitrate, ORIENTATION_MODE orientationMode, MIRROR_MODE_TYPE mirrorMode)

## Public Attributes
VideoDimensions | dimensions
int | frameRate
int | minFrameRate
int | bitrate
int | minBitrate
ORIENTATION_MODE | orientationMode
DEGRADATION_PREFERENCE | degradationPrefer
MIRROR_MODE_TYPE | mirrorMode
AdvanceOptions | advanceOptions
VIDEO_CODEC_TYPE | codecType

## Static Public Attributes
static final VideoDimensions | VD_120x120 = new VideoDimensions(120, 120)
static final VideoDimensions | VD_160x120 = new VideoDimensions(160, 120)
static final VideoDimensions | VD_180x180 = new VideoDimensions(180, 180)
static final VideoDimensions | VD_240x180 = new VideoDimensions(240, 180)
static final VideoDimensions | VD_320x180 = new VideoDimensions(320, 180)
static final VideoDimensions | VD_240x240 = new VideoDimensions(240, 240)
static final VideoDimensions | VD_320x240 = new VideoDimensions(320, 240)
static final VideoDimensions | VD_424x240 = new VideoDimensions(424, 240)
static final VideoDimensions | VD_360x360 = new VideoDimensions(360, 360)
static final VideoDimensions | VD_480x360 = new VideoDimensions(480, 360)
static final VideoDimensions | VD_640x360 = new VideoDimensions(640, 360)
static final VideoDimensions | VD_480x480 = new VideoDimensions(480, 480)
static final VideoDimensions | VD_640x480 = new VideoDimensions(640, 480)
static final VideoDimensions | VD_840x480 = new VideoDimensions(840, 480)
static final VideoDimensions | VD_960x540 = new VideoDimensions(960, 540)
static final VideoDimensions | VD_960x720 = new VideoDimensions(960, 720)
static final VideoDimensions | VD_1280x720 = new VideoDimensions(1280, 720)
static final VideoDimensions | VD_1920x1080 = new VideoDimensions(1920, 1080)
static final VideoDimensions | VD_2540x1440 = new VideoDimensions(2540, 1440)
static final VideoDimensions | VD_3840x2160 = new VideoDimensions(3840, 2160)
static final int | STANDARD_BITRATE = 0
static final int | COMPATIBLE_BITRATE = -1
static final int | DEFAULT_MIN_BITRATE = -1
static final int | DEFAULT_MIN_FRAMERATE = -1
static final int | DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2

## Detailed Description

The video encoder configuration.

## Member Data Documentation

## ◆ VD_120x120

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_120x120 = new VideoDimensions(120, 120)
| static

VD_120x120: The video resolution is 120 × 120.

## ◆ VD_160x120

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_160x120 = new VideoDimensions(160, 120)
| static

VD_160x120: The video resolution is 160 × 120.

## ◆ VD_180x180

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_180x180 = new VideoDimensions(180, 180)
| static

VD_180x180: The video resolution is 180 × 180.

## ◆ VD_240x180

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_240x180 = new VideoDimensions(240, 180)
| static

VD_240x180: The video resolution is 240 × 180.

## ◆ VD_320x180

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_320x180 = new VideoDimensions(320, 180)
| static

VD_320x180: The video resolution is 320 × 180.

## ◆ VD_240x240

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_240x240 = new VideoDimensions(240, 240)
| static

VD_240x240: The video resolution is 240 × 240.

## ◆ VD_320x240

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_320x240 = new VideoDimensions(320, 240)
| static

VD_320x240: The video resolution is 320 × 240.

## ◆ VD_424x240

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_424x240 = new VideoDimensions(424, 240)
| static

VD_424x240: The video resolution is 424 × 240.

## ◆ VD_360x360

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_360x360 = new VideoDimensions(360, 360)
| static

VD_360x360: The video resolution is 360 × 360.

## ◆ VD_480x360

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_480x360 = new VideoDimensions(480, 360)
| static

VD_480x360: The video resolution is 480 × 360.

## ◆ VD_640x360

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_640x360 = new VideoDimensions(640, 360)
| static

VD_640x360: The video resolution is 640 × 360.

## ◆ VD_480x480

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_480x480 = new VideoDimensions(480, 480)
| static

VD_480x480: The video resolution is 480 × 480.

## ◆ VD_640x480

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_640x480 = new VideoDimensions(640, 480)
| static

VD_640x480: The video resolution is 640 × 480.

## ◆ VD_840x480

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_840x480 = new VideoDimensions(840, 480)
| static

VD_840x480: The video resolution is 840 × 480.

## ◆ VD_960x540

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_960x540 = new VideoDimensions(960, 540)
| static

VD_960x540: The video resolution is 960 × 540.

## ◆ VD_960x720

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_960x720 = new VideoDimensions(960, 720)
| static

VD_960x720: The video resolution is 640 × 360.

## ◆ VD_1280x720

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_1280x720 = new VideoDimensions(1280, 720)
| static

VD_1280x720: The video resolution is 640 × 360.

## ◆ VD_1920x1080

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_1920x1080 = new VideoDimensions(1920, 1080)
| static

Not supported.

## ◆ VD_2540x1440

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_2540x1440 = new VideoDimensions(2540, 1440)
| static

Not supported.

## ◆ VD_3840x2160

final VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.VD_3840x2160 = new VideoDimensions(3840, 2160)
| static

Not supported.

## ◆ STANDARD_BITRATE

final int io.agora.rtc2.video.VideoEncoderConfiguration.STANDARD_BITRATE = 0
| static

0: The standard bitrate mode. In this mode, the bitrates under the Live Broadcast and Communication profiles differ:

- In the Communication profile, the video bitrate is the same as the base bitrate.
- In the Live Broadcast profile, the video bitrate is twice the base bitrate.

## ◆ COMPATIBLE_BITRATE

final int io.agora.rtc2.video.VideoEncoderConfiguration.COMPATIBLE_BITRATE = -1
| static

-1: The compatible bitrate mode. In this mode, the bitrate stays the same regardless of the profile. If you choose this mode for the Live Broadcast profile, the video frame rate may be lower than the set value.

## ◆ DEFAULT_MIN_BITRATE

final int io.agora.rtc2.video.VideoEncoderConfiguration.DEFAULT_MIN_BITRATE = -1
| static

(For future use) Use the default minimum bitrate.

## ◆ DEFAULT_MIN_FRAMERATE

final int io.agora.rtc2.video.VideoEncoderConfiguration.DEFAULT_MIN_FRAMERATE = -1
| static

(For future use) The default minimum frame rate.

## ◆ DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE

final int io.agora.rtc2.video.VideoEncoderConfiguration.DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2
| static

-2: (For future use) Set minimum bitrate the same as target bitrate.

## ◆ dimensions

VideoDimensions io.agora.rtc2.video.VideoEncoderConfiguration.dimensions

The video frame dimensions (px), which is used to specify the video quality and measured by the total number of pixels along a frame's width and height. The default value is 960 × 540. Users can either set the resolution manually or choose from the following options:

- VD_120x120.
- VD_160x120.
- VD_180x180.
- VD_240x180.
- VD_320x180.
- VD_240x240.
- VD_320x240.
- VD_424x240.
- VD_360x360.
- VD_480x360.
- VD_640x360.
- VD_480x480.
- VD_640x480.
- VD_840x480.
- VD_960x540.
- VD_960x720.
- VD_1280x720.

Note
  - The value of the dimension does not indicate the orientation mode of the output ratio. For how to set the video orientation, see ORIENTATION_MODE.
  - Whether 720p+ can be supported depends on the device. If the device cannot support 720p, the frame rate will be lower than the one listed in the table.

## ◆ frameRate

int io.agora.rtc2.video.VideoEncoderConfiguration.frameRate

The video frame rate (fps). The default value is 15. Users can either set the frame rate manually or choose from the following options. We do not recommend setting this to a value greater than 30.

- FRAME_RATE_FPS_1(1).
- FRAME_RATE_FPS_7(7).
- FRAME_RATE_FPS_10(10).
- FRAME_RATE_FPS_15(15).
- FRAME_RATE_FPS_24(24).
- FRAME_RATE_FPS_30(30).
- FRAME_RATE_FPS_60(60).

## ◆ minFrameRate

int io.agora.rtc2.video.VideoEncoderConfiguration.minFrameRate

(For future use) The minimum video encoder frame rate (fps). The default value is {DEFAULT_MIN_FRAMERATE(-1)} (the SDK uses the lowest encoder frame rate).

## ◆ bitrate

int io.agora.rtc2.video.VideoEncoderConfiguration.bitrate

The bitrate of the video (Kbps). Refer to the table below and set your bitrate. If you set a bitrate beyond the proper range, the SDK automatically adjusts it to a value within the range. You can also choose from the following options:

- STANDARD_BITRATE(0): (Recommended) The standard bitrate mode. In this mode, the bitrates differ between the Live Broadcast and Communication profiles:
  - In the Communication profile, the video bitrate is the same as the base bitrate.
  - In the Live Broadcast profile, the video bitrate is twice the base bitrate.
- COMPATIBLE_BITRATE(-1): The compatible bitrate mode. In this mode, the bitrate stays the same regardless of the profile. If you choose this mode for the Live Broadcast profile, the video frame rate may be lower than the set value.

Agora uses different video codecs for different profiles to optimize the user experience. For example, the Communication profile prioritizes the smoothness while the Live Broadcast profile prioritizes the video quality (a higher bitrate). Therefore, We recommend setting this parameter as STANDARD_BITRATE = 0.

Video Bitrate Table

Resolution | Frame rate（fps） | Base Bitrate (Kbps, for Communication) | Live Bitrate (Kbps, for Live Broadcast)
--- | --- | --- | ---
160 × 120 | 15 | 65 | 130
120 × 120 | 15 | 50 | 100
320 × 180 | 15 | 140 | 280
180 × 180 | 15 | 100 | 200
240 × 180 | 15 | 120 | 240
320 × 240 | 15 | 200 | 400
240 × 240 | 15 | 140 | 280
424 × 240 | 15 | 220 | 440
640 × 360 | 15 | 400 | 800
360 × 360 | 15 | 260 | 520
640 × 360 | 30 | 600 | 1200
360 × 360 | 30 | 400 | 800
480 × 360 | 15 | 320 | 640
480 × 360 | 30 | 490 | 980
640 × 480 | 15 | 500 | 1000
480 × 480 | 15 | 400 | 800
640 × 480 | 30 | 750 | 1500
480 × 480 | 30 | 600 | 1200
848 × 480 | 15 | 610 | 1220
848 × 480 | 30 | 930 | 1860
640 × 480 | 10 | 400 | 800
1280 × 720 | 15 | 1130 | 2260
1280 × 720 | 30 | 1710 | 3420
960 × 720 | 15 | 910 | 1820
960 × 720 | 30 | 1380 | 2760

Note
  The base bitrate in this table applies to the Communication profile. The Live Broadcast profile generally requires a higher bitrate for better video quality. We recommend setting the bitrate mode as STANDARD_BITRATE = 0. You can also set the bitrate as the base bitrate value × 2.

## ◆ minBitrate

int io.agora.rtc2.video.VideoEncoderConfiguration.minBitrate

(For future use) The minimum encoding bitrate (Kbps). The Agora SDK automatically adjusts the encoding bitrate to adapt to the network conditions. Using a value greater than the default value forces the video encoder to output high-quality images but may cause more packet loss and hence sacrifice the smoothness of the video transmission. That said, unless you have special requirements for image quality, Agora does not recommend changing this value.

Note
  This parameter applies to the Live Broadcast profile only.

## ◆ orientationMode

ORIENTATION_MODE io.agora.rtc2.video.VideoEncoderConfiguration.orientationMode

The orientation mode. See ORIENTATION_MODE.

## ◆ degradationPrefer

DEGRADATION_PREFERENCE io.agora.rtc2.video.VideoEncoderConfiguration.degradationPrefer

The video encoding degradation preference under limited bandwidth: {DEGRADATION_PREFERENCE}. Currently, this member supports `MAINTAIN_QUALITY`(0) only.

## ◆ mirrorMode

MIRROR_MODE_TYPE io.agora.rtc2.video.VideoEncoderConfiguration.mirrorMode

If mirror_type is set to VIDEO_MIRROR_MODE_ENABLED, then the video frame would be mirrored before encoding.

## ◆ advanceOptions

AdvanceOptions io.agora.rtc2.video.VideoEncoderConfiguration.advanceOptions

The video hardwareEncoding: #hardwareEncoding and The video compressionPreference: #compressionPreference.

## ◆ codecType

VIDEO_CODEC_TYPE io.agora.rtc2.video.VideoEncoderConfiguration.codecType

The codec type of the local video stream. See #VIDEO_CODEC_TYPE. The default value is `VIDEO_CODEC_H265 (3)`.