# ConcatenatingMediaSource2.Builder

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

*** ** * ** ***


```
public final class ConcatenatingMediaSource2.Builder
```

<br />

*** ** * ** ***

A builder for `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#Builder()()` Creates the builder. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)` Adds a `https://developer.android.com/reference/androidx/media3/common/MediaItem` to the concatenation. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.exoplayer.source.MediaSource)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource)` Adds a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` to the concatenation. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem,long)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem, long initialPlaceholderDurationMs)` Adds a `https://developer.android.com/reference/androidx/media3/common/MediaItem` to the concatenation and specifies its initial placeholder duration used while the actual duration is still unknown. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.exoplayer.source.MediaSource,long)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource, long initialPlaceholderDurationMs)` Adds a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` to the concatenation and specifies its initial placeholder duration used while the actual duration is still unknown. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#build()()` Builds the concatenating media source. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#setMediaItem(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)` Sets the `https://developer.android.com/reference/androidx/media3/common/MediaItem` to be used for the concatenated media source. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#setMediaSourceFactory(androidx.media3.exoplayer.source.MediaSource.Factory)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory mediaSourceFactory)` Sets a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` that is used to convert `https://developer.android.com/reference/androidx/media3/common/MediaItem` to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` for all future calls to `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem)` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem,long)`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#useDefaultMediaSourceFactory(android.content.Context)(https://developer.android.com/reference/android/content/Context.html context)` Instructs the builder to use a `https://developer.android.com/reference/androidx/media3/exoplayer/source/DefaultMediaSourceFactory` to convert `https://developer.android.com/reference/androidx/media3/common/MediaItem` to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` for all future calls to `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem)` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem,long)`. |

## Public constructors

### Builder

```
public Builder()
```

Creates the builder.

## Public methods

### add

```
@CanIgnoreReturnValue
public ConcatenatingMediaSource2.Builder add(MediaItem mediaItem)
```

Adds a `https://developer.android.com/reference/androidx/media3/common/MediaItem` to the concatenation.

`https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#useDefaultMediaSourceFactory(android.content.Context)` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#setMediaSourceFactory(androidx.media3.exoplayer.source.MediaSource.Factory)` must be called before this method.

This method must not be used with media items for progressive media that can't provide their duration with their first `https://developer.android.com/reference/androidx/media3/common/Timeline` update. Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem,long)` instead.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | This builder. |

### add

```
@CanIgnoreReturnValue
public ConcatenatingMediaSource2.Builder add(MediaSource mediaSource)
```

Adds a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` to the concatenation.

This method must not be used for sources like `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaSource` that can't provide their duration with their first `https://developer.android.com/reference/androidx/media3/common/Timeline` update. Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.exoplayer.source.MediaSource,long)` instead.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource` | The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | This builder. |

### add

```
@CanIgnoreReturnValue
public ConcatenatingMediaSource2.Builder add(MediaItem mediaItem, long initialPlaceholderDurationMs)
```

Adds a `https://developer.android.com/reference/androidx/media3/common/MediaItem` to the concatenation and specifies its initial placeholder duration used while the actual duration is still unknown.

`https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#useDefaultMediaSourceFactory(android.content.Context)` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#setMediaSourceFactory(androidx.media3.exoplayer.source.MediaSource.Factory)` must be called before this method.

Setting a placeholder duration is required for media items for progressive media that can't provide their duration with their first `https://developer.android.com/reference/androidx/media3/common/Timeline` update. It may also be used for other items to make the duration known immediately.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `long initialPlaceholderDurationMs` | The initial placeholder duration in milliseconds used while the actual duration is still unknown, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` to not define one. The placeholder duration is used for every `https://developer.android.com/reference/androidx/media3/common/Timeline.Window` defined by `https://developer.android.com/reference/androidx/media3/common/Timeline` of the `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | This builder. |

### add

```
@CanIgnoreReturnValue
public ConcatenatingMediaSource2.Builder add(MediaSource mediaSource, long initialPlaceholderDurationMs)
```

Adds a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` to the concatenation and specifies its initial placeholder duration used while the actual duration is still unknown.

Setting a placeholder duration is required for sources like `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaSource` that can't provide their duration with their first `https://developer.android.com/reference/androidx/media3/common/Timeline` update. It may also be used for other sources to make the duration known immediately.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource` | The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`. |
| `long initialPlaceholderDurationMs` | The initial placeholder duration in milliseconds used while the actual duration is still unknown, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` to not define one. The placeholder duration is used for every `https://developer.android.com/reference/androidx/media3/common/Timeline.Window` defined by `https://developer.android.com/reference/androidx/media3/common/Timeline` of the `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | This builder. |

### build

```
public ConcatenatingMediaSource2 build()
```

Builds the concatenating media source.

### setMediaItem

```
@CanIgnoreReturnValue
public ConcatenatingMediaSource2.Builder setMediaItem(MediaItem mediaItem)
```

Sets the `https://developer.android.com/reference/androidx/media3/common/MediaItem` to be used for the concatenated media source.

This `https://developer.android.com/reference/androidx/media3/common/MediaItem` will be used as `https://developer.android.com/reference/androidx/media3/common/Timeline.Window#mediaItem()` for the concatenated source and will be returned by `https://developer.android.com/reference/androidx/media3/common/Player#getCurrentMediaItem()`.

The default is `MediaItem.fromUri(Uri.EMPTY)`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | This builder. |

### setMediaSourceFactory

```
@CanIgnoreReturnValue
public ConcatenatingMediaSource2.Builder setMediaSourceFactory(MediaSource.Factory mediaSourceFactory)
```

Sets a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` that is used to convert `https://developer.android.com/reference/androidx/media3/common/MediaItem` to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` for all future calls to `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem)` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem,long)`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory mediaSourceFactory` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | This builder. |

### useDefaultMediaSourceFactory

```
@CanIgnoreReturnValue
public ConcatenatingMediaSource2.Builder useDefaultMediaSourceFactory(Context context)
```

Instructs the builder to use a `https://developer.android.com/reference/androidx/media3/exoplayer/source/DefaultMediaSourceFactory` to convert `https://developer.android.com/reference/androidx/media3/common/MediaItem` to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` for all future calls to `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem)` or `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder#add(androidx.media3.common.MediaItem,long)`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | This builder. |