# EditedMediaItem.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/EditedMediaItem.java+class:androidx.media3.transformer.EditedMediaItem.Builder)

*** ** * ** ***


```
public final class EditedMediaItem.Builder
```

<br />

*** ** * ** ***

A builder for `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#Builder(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)` Creates an instance. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem` | `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#build()()` Builds an `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem` instance. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setDurationUs(long)(@https://developer.android.com/reference/androidx/annotation/IntRange(from = 1) long durationUs)` Sets the duration in microseconds of the source media represented by the `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setEffects(androidx.media3.transformer.Effects)(https://developer.android.com/reference/androidx/media3/transformer/Effects effects)` Sets the `https://developer.android.com/reference/androidx/media3/transformer/Effects` to apply to the `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setFlattenForSlowMotion(boolean)(boolean flattenForSlowMotion)` Sets whether to flatten the `https://developer.android.com/reference/androidx/media3/common/MediaItem` if it contains slow motion markers. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setFrameRate(int)(@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int frameRate)` Sets the `https://developer.android.com/reference/androidx/media3/common/MediaItem` frame rate in the output video, in frames per second. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setRemoveAudio(boolean)(boolean removeAudio)` Sets whether to remove the audio from the `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setRemoveVideo(boolean)(boolean removeVideo)` Sets whether to remove the video from the `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://developer.android.com/reference/androidx/media3/common/util/ExperimentalApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setSpeed(androidx.media3.common.SpeedParameters)(https://developer.android.com/reference/androidx/media3/common/SpeedParameters parameters)` Sets a `https://developer.android.com/reference/androidx/media3/common/SpeedParameters` instance to control the presentation speed of the `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem`. |
| `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setSpeed(androidx.media3.common.audio.SpeedProvider)(https://developer.android.com/reference/androidx/media3/common/audio/SpeedProvider provider)` Sets a `https://developer.android.com/reference/androidx/media3/common/audio/SpeedProvider` to control the presentation speed of the `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem`. |

## Public constructors

### Builder

```
public Builder(MediaItem mediaItem)
```

Creates an instance.

For image inputs:

- The `https://developer.android.com/reference/androidx/media3/common/MediaItem.Builder#setImageDurationMs(long)` should always be set.
- The values passed into `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setRemoveAudio(boolean)`, `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setRemoveVideo(boolean)` and `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setFlattenForSlowMotion(boolean)` will be ignored.
- For multi-picture formats (e.g. gifs), a single image frame from the container is displayed if the `https://developer.android.com/reference/androidx/media3/transformer/DefaultAssetLoaderFactory` is used.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem` on which transformations are applied. |

## Public methods

### build

```
public EditedMediaItem build()
```

Builds an `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem` instance.

### setDurationUs

```
@CanIgnoreReturnValue
public EditedMediaItem.Builder setDurationUs(@IntRange(from = 1) long durationUs)
```

Sets the duration in microseconds of the source media represented by the `https://developer.android.com/reference/androidx/media3/common/MediaItem`.

The provided duration should match the duration of the source media before applying any `https://developer.android.com/reference/androidx/media3/common/MediaItem.ClippingConfiguration` or `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setSpeed(androidx.media3.common.audio.SpeedProvider)`.

Setting the duration is optional in the following cases:

- The `https://developer.android.com/reference/androidx/media3/common/MediaItem` represents an image. The default image duration set via `https://developer.android.com/reference/androidx/media3/common/MediaItem.Builder#setImageDurationMs(long)`.
- On `https://developer.android.com/reference/androidx/media3/transformer/Transformer`, when the `https://developer.android.com/reference/androidx/media3/common/MediaItem` has an intrinsic duration (e.g. encoded video/audio data from an input file).

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 1) long durationUs` | The duration, in microseconds. |

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

### setEffects

```
@CanIgnoreReturnValue
public EditedMediaItem.Builder setEffects(Effects effects)
```

Sets the `https://developer.android.com/reference/androidx/media3/transformer/Effects` to apply to the `https://developer.android.com/reference/androidx/media3/common/MediaItem`.

Callers should not interact with underlying `https://developer.android.com/reference/androidx/media3/transformer/Effects#audioProcessors()`.

The default value is `https://developer.android.com/reference/androidx/media3/transformer/Effects#EMPTY()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/Effects effects` | The `https://developer.android.com/reference/androidx/media3/transformer/Effects` to apply. |

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

### setFlattenForSlowMotion

```
@CanIgnoreReturnValue
public EditedMediaItem.Builder setFlattenForSlowMotion(boolean flattenForSlowMotion)
```

Sets whether to flatten the `https://developer.android.com/reference/androidx/media3/common/MediaItem` if it contains slow motion markers.

The default value is `false`.

See `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#flattenForSlowMotion()` for more information about slow motion flattening.

If using an `https://developer.android.com/reference/androidx/media3/transformer/ExoPlayerAssetLoader.Factory` with a provided `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory`, make sure that `https://developer.android.com/reference/androidx/media3/extractor/mp4/Mp4Extractor#FLAG_READ_SEF_DATA()` is set on the `https://developer.android.com/reference/androidx/media3/extractor/mp4/Mp4Extractor` used. Otherwise, the slow motion metadata will be ignored and the input won't be flattened.

Slow motion flattening is only supported when the `https://developer.android.com/reference/androidx/media3/transformer/Composition` contains exactly one `https://developer.android.com/reference/androidx/media3/common/MediaItem`.

Using slow motion flattening together with `https://developer.android.com/reference/androidx/media3/common/MediaItem.ClippingConfiguration` is not supported yet.

| Parameters |
|---|---|
| `boolean flattenForSlowMotion` | Whether to flatten for slow motion. |

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

### setFrameRate

```
@CanIgnoreReturnValue
public EditedMediaItem.Builder setFrameRate(@IntRange(from = 0) int frameRate)
```

Sets the `https://developer.android.com/reference/androidx/media3/common/MediaItem` frame rate in the output video, in frames per second.

- For inputs that don't have an intrinsic frame rate (e.g., images), this value determines the frame rate of the output video. For images, the frame rate depends on factors such as desired look, output format requirement, and whether the content is static or dynamic (e.g., animation). However, 30 fps is suitable for most use cases.
- For inputs that do have an intrinsic frame rate (e.g., video), this value acts as a maximum frame rate. If the intrinsic frame rate is higher than the value set here, frames will be dropped to achieve the specified maximum frame rate in the output. If the intrinsic frame rate is lower, this parameter has no effect. Setting the max frame rate is particularly important when increasing media speed using the `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setSpeed(androidx.media3.common.audio.SpeedProvider)` API. Increasing media speed adjusts video sample timestamps to the new rate, resulting in a higher effective output frame rate. By setting a maximum frame rate, you can prevent the output from having an excessively high frame rate.

No frame rate is set by default.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int frameRate` | The frame rate, in frames per second. |

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

### setRemoveAudio

```
@CanIgnoreReturnValue
public EditedMediaItem.Builder setRemoveAudio(boolean removeAudio)
```

Sets whether to remove the audio from the `https://developer.android.com/reference/androidx/media3/common/MediaItem`.

The default value is `false`.

The audio and video cannot both be removed because the output would not contain any samples.

| Parameters |
|---|---|
| `boolean removeAudio` | Whether to remove the audio. |

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

### setRemoveVideo

```
@CanIgnoreReturnValue
public EditedMediaItem.Builder setRemoveVideo(boolean removeVideo)
```

Sets whether to remove the video from the `https://developer.android.com/reference/androidx/media3/common/MediaItem`.

The default value is `false`.

The audio and video cannot both be removed because the output would not contain any samples.

| Parameters |
|---|---|
| `boolean removeVideo` | Whether to remove the video. |

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

### setSpeed

```
@ExperimentalApi
@CanIgnoreReturnValue
public EditedMediaItem.Builder setSpeed(SpeedParameters parameters)
```

Sets a `https://developer.android.com/reference/androidx/media3/common/SpeedParameters` instance to control the presentation speed of the `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem`.

If a `https://developer.android.com/reference/androidx/media3/common/SpeedParameters` instance is set, speed changing `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setEffects(androidx.media3.transformer.Effects)` are not allowed.

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

### setSpeed

```
@CanIgnoreReturnValue
public EditedMediaItem.Builder setSpeed(SpeedProvider provider)
```

Sets a `https://developer.android.com/reference/androidx/media3/common/audio/SpeedProvider` to control the presentation speed of the `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem`.

If a `https://developer.android.com/reference/androidx/media3/common/audio/SpeedProvider` is set, speed changing `https://developer.android.com/reference/androidx/media3/transformer/EditedMediaItem.Builder#setEffects(androidx.media3.transformer.Effects)` are not allowed.

This method is identical to `setSpeed(new SpeedParameters(provider, false))`.

The default value is `https://developer.android.com/reference/androidx/media3/common/audio/SpeedProvider#DEFAULT()`, which represents an unmodified speed.

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