# FragmentedMp4Muxer.Builder

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

*** ** * ** ***


```
public final class FragmentedMp4Muxer.Builder
```

<br />

*** ** * ** ***

A builder for `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#Builder(java.nio.channels.WritableByteChannel)(https://developer.android.com/reference/java/nio/channels/WritableByteChannel.html outputChannel)` Creates a `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder` instance with default values. |
| `@https://checkerframework.org/api/com/google/errorprone/annotations/InlineMe.html(replacement = "this(Channels.newChannel(outputStream))", imports = "java.nio.channels.Channels") [Builder](https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#Builder(java.io.OutputStream))(https://developer.android.com/reference/java/io/OutputStream.html outputStream)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#Builder(java.nio.channels.WritableByteChannel)` instead. <br /> |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer` | `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#build()()` Builds a `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer` instance. |
| `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#setFragmentDurationMs(long)(long fragmentDurationMs)` Sets the fragment duration (in milliseconds). |
| `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#setSampleCopyingEnabled(boolean)(boolean enabled)` Sets whether to enable the sample copy. |

## Public constructors

### Builder

```
public Builder(WritableByteChannel outputChannel)
```

Creates a `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder` instance with default values.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/nio/channels/WritableByteChannel.html outputChannel` | The `https://developer.android.com/reference/java/nio/channels/WritableByteChannel.html` to write the media data to. This channel will be automatically closed by the muxer when `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer#close()` is called. |

### Builder

```
@InlineMe(replacement = "this(Channels.newChannel(outputStream))", imports = "java.nio.channels.Channels")
public [Builder](https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#Builder(java.io.OutputStream))(OutputStream outputStream)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer.Builder#Builder(java.nio.channels.WritableByteChannel)` instead.

## Public methods

### build

```
public FragmentedMp4Muxer build()
```

Builds a `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer` instance.

### setFragmentDurationMs

```
@CanIgnoreReturnValue
public FragmentedMp4Muxer.Builder setFragmentDurationMs(long fragmentDurationMs)
```

Sets the fragment duration (in milliseconds).

The muxer will attempt to create fragments of the given duration but the actual duration might be greater depending upon the frequency of sync samples.

The default value is `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer#DEFAULT_FRAGMENT_DURATION_MS()`.

### setSampleCopyingEnabled

```
@CanIgnoreReturnValue
public FragmentedMp4Muxer.Builder setSampleCopyingEnabled(boolean enabled)
```

Sets whether to enable the sample copy.

If the sample copy is enabled, `https://developer.android.com/reference/androidx/media3/muxer/FragmentedMp4Muxer#writeSampleData(int,java.nio.ByteBuffer,androidx.media3.muxer.BufferInfo)` copies the input `https://developer.android.com/reference/java/nio/ByteBuffer.html` and `https://developer.android.com/reference/androidx/media3/muxer/BufferInfo` before it returns, so it is safe to reuse them immediately. Otherwise, the muxer takes ownership of the `https://developer.android.com/reference/java/nio/ByteBuffer.html` and the `https://developer.android.com/reference/androidx/media3/muxer/BufferInfo` and the caller must not modify them.

The default value is `true`.