# VideoEncoderSettings.Builder

Artifact: [androidx.media3:media3-transformer](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/transformer/VideoEncoderSettings.java+class:androidx.media3.transformer.VideoEncoderSettings.Builder)

*** ** * ** ***


```
public final class VideoEncoderSettings.Builder
```

<br />

*** ** * ** ***

Builds `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#Builder()()` Creates a new instance. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings` | `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#build()()` Builds the instance. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setBitrate(int)(int bitrate)` Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#bitrate()`. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setBitrateMode(int)(@https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.BitrateMode int bitrateMode)` Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#bitrateMode()`. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setComplexity(int)(int complexity)` Sets the encoding complexity. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setEncoderPerformanceParameters(int,int)(int operatingRate, int priority)` Sets encoding operating rate and priority. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setEncodingProfileLevel(int,int)(int encodingProfile, int encodingLevel)` Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#profile()` and `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#level()`. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setMaxBFrames(int)(int maxBFrames)` Sets the maximum number of B frames allowed between I or P frames in the produced video. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setRepeatPreviousFrameIntervalUs(long)(long repeatPreviousFrameIntervalUs)` Sets the threshold duration between input frames beyond which to repeat the previous frame if no new frame has been received, in microseconds. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setTemporalLayers(int,int)( int numNonBidirectionalLayers, int numBidirectionalLayers )` Sets the number of temporal layers to request from the video encoder. |
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder#setiFrameIntervalSeconds(float)(float iFrameIntervalSeconds)` Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#iFrameIntervalSeconds()`. |

## Public constructors

### Builder

```
public Builder()
```

Creates a new instance.

## Public methods

### build

```
public VideoEncoderSettings build()
```

Builds the instance.

### setBitrate

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setBitrate(int bitrate)
```

Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#bitrate()`. The default value is `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`.

| Parameters |
|---|---|
| `int bitrate` | The `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#bitrate()` in bits per second. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setBitrateMode

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setBitrateMode(@VideoEncoderSettings.BitrateMode int bitrateMode)
```

Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#bitrateMode()`. The default value is `
MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_VBR`.

Value must be in `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.BitrateMode`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.BitrateMode int bitrateMode` | The `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#bitrateMode()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setComplexity

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setComplexity(int complexity)
```

Sets the encoding complexity. The default value is `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()` which indicates that no `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_COMPLEXITY` will be set for the encoder.

The valid range of values depends on the encoder, and is exposed by `https://developer.android.com/reference/android/media/MediaCodecInfo.EncoderCapabilities.html#getComplexityRange()`.

| Parameters |
|---|---|
| `int complexity` | The `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_COMPLEXITY`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setEncoderPerformanceParameters

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setEncoderPerformanceParameters(int operatingRate, int priority)
```

Sets encoding operating rate and priority. The default values are `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`, which is treated as configuring the encoder for maximum throughput.

To disable the configuration for either operating rate or priority, use `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#RATE_UNSET()` for that argument.

| Parameters |
|---|---|
| `int operatingRate` | The `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_OPERATING_RATE` in frames per second. |
| `int priority` | The `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_PRIORITY`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setEncodingProfileLevel

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setEncodingProfileLevel(int encodingProfile, int encodingLevel)
```

Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#profile()` and `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#level()`. The default values are both `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`.

The value must be one of the values defined in `https://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel.html`, or `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`.

Profile settings will be ignored when using `https://developer.android.com/reference/androidx/media3/transformer/DefaultEncoderFactory` and encoding to H264.

| Parameters |
|---|---|
| `int encodingProfile` | The `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#profile()`. |
| `int encodingLevel` | The `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#level()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setMaxBFrames

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setMaxBFrames(int maxBFrames)
```

Sets the maximum number of B frames allowed between I or P frames in the produced video. The default value is `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()` which means that B frame encoding is disabled.

| Parameters |
|---|---|
| `int maxBFrames` | the `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_MAX_B_FRAMES` allowed. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setRepeatPreviousFrameIntervalUs

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setRepeatPreviousFrameIntervalUs(long repeatPreviousFrameIntervalUs)
```

Sets the threshold duration between input frames beyond which to repeat the previous frame if no new frame has been received, in microseconds. The default value is `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`, which means that frames are not automatically repeated.

| Parameters |
|---|---|
| `long repeatPreviousFrameIntervalUs` | The `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_REPEAT_PREVIOUS_FRAME_AFTER`, in microseconds. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setTemporalLayers

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setTemporalLayers(
    int numNonBidirectionalLayers,
    int numBidirectionalLayers
)
```

Sets the number of temporal layers to request from the video encoder.

The default value for both parameters is `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()` which indicates that no `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_TEMPORAL_LAYERING` will be set for the encoder.

| Parameters |
|---|---|
| `int numNonBidirectionalLayers` | the number of predictive layers to have. This value must be greater than or equal to zero, or `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()` if `numBidirectionalLayers` is also `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`. A value of '0' explicitly requests no temporal layers from the encoder, in which case `numBidirectionalLayers` must be '0' or `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`. |
| `int numBidirectionalLayers` | the number of bi-directional layers to have. This value must be greater than or equal to zero, or `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()` if `numNonBidirectionalLayers` is '0' or `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#NO_VALUE()`. A value greater than 1 constructs a hierarchical-B coding structure. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |

### setiFrameIntervalSeconds

```
@CanIgnoreReturnValue
public VideoEncoderSettings.Builder setiFrameIntervalSeconds(float iFrameIntervalSeconds)
```

Sets `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#iFrameIntervalSeconds()`. The default value is `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#DEFAULT_I_FRAME_INTERVAL_SECONDS()`.

| Parameters |
|---|---|
| `float iFrameIntervalSeconds` | The `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#iFrameIntervalSeconds()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings.Builder` | This builder. |