# DefaultMuxer.Factory

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/DefaultMuxer.java+class:androidx.media3.transformer.DefaultMuxer.Factory)

*** ** * ** ***


```
public final class DefaultMuxer.Factory implements Muxer.Factory
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/androidx/media3/muxer/Muxer.Factory` for `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#Factory()()` Creates an instance. |
| `[Factory](https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#Factory(long))(long videoDurationMs)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#setVideoDurationUs(long)` instead. <br /> |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/muxer/Muxer` | `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#create(java.lang.String)(https://developer.android.com/reference/java/lang/String.html path)` Returns a new `https://developer.android.com/reference/androidx/media3/muxer/Muxer`. |
| `https://developer.android.com/reference/androidx/media3/muxer/Muxer` | `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#create(android.os.ParcelFileDescriptor)(https://developer.android.com/reference/android/os/ParcelFileDescriptor.html pfd)` Returns a new `https://developer.android.com/reference/androidx/media3/muxer/Muxer`. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/java/lang/String.html>` | `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#getSupportedSampleMimeTypes(int)(@https://developer.android.com/reference/androidx/media3/common/C.TrackType int trackType)` Returns the supported sample `https://developer.android.com/reference/androidx/media3/common/MimeTypes` for the given `https://developer.android.com/reference/androidx/media3/common/C.TrackType`. |
| `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#setVideoDurationUs(long)(long videoDurationUs)` Sets the duration of the video track (in microseconds) to enforce in the output. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#supportsWritingNegativeTimestampsInEditList()()` Whether the muxer supports writing negative timestamps into an edit list to instruct players to ignore these samples. |

## Public constructors

### Factory

```
public Factory()
```

Creates an instance.

### Factory

```
public [Factory](https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#Factory(long))(long videoDurationMs)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#setVideoDurationUs(long)` instead. Note that a conversion from milliseconds to microseconds is required to migrate to `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory#setVideoDurationUs(long)`.

## Public methods

### create

```
public Muxer create(String path)
```

Returns a new `https://developer.android.com/reference/androidx/media3/muxer/Muxer`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html path` | The path to the output file. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/muxer/MuxerException` | If an error occurs opening the output file for writing. |

### create

```
public Muxer create(ParcelFileDescriptor pfd)
```

Returns a new `https://developer.android.com/reference/androidx/media3/muxer/Muxer`.

The caller transfers ownership of the `https://developer.android.com/reference/android/os/ParcelFileDescriptor.html` to the `https://developer.android.com/reference/androidx/media3/muxer/Muxer.Factory`. If this method returns successfully, the created `https://developer.android.com/reference/androidx/media3/muxer/Muxer` is responsible for closing the descriptor when `https://developer.android.com/reference/androidx/media3/muxer/Muxer#close()` is called. If an error occurs and a `https://developer.android.com/reference/androidx/media3/muxer/MuxerException` is thrown, the descriptor is closed before the exception is thrown.

Whether the provided `https://developer.android.com/reference/android/os/ParcelFileDescriptor.html` must be seekable depends on the container format and `https://developer.android.com/reference/androidx/media3/muxer/Muxer` implementation. For example, standard MP4 muxers require seekable descriptors (such as those opened with `"rwt"` or `"rw"`), whereas streaming muxers (such as fragmented MP4 muxers) also accept non-seekable streams like pipes.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/os/ParcelFileDescriptor.html pfd` | the `https://developer.android.com/reference/android/os/ParcelFileDescriptor.html` to write output to |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/muxer/MuxerException` | if an error occurs opening the output for writing or if the descriptor does not satisfy the seekability requirements of the muxer |

### getSupportedSampleMimeTypes

```
public ImmutableList<String> getSupportedSampleMimeTypes(@C.TrackType int trackType)
```

Returns the supported sample `https://developer.android.com/reference/androidx/media3/common/MimeTypes` for the given `https://developer.android.com/reference/androidx/media3/common/C.TrackType`.

### setVideoDurationUs

```
@CanIgnoreReturnValue
public DefaultMuxer.Factory setVideoDurationUs(long videoDurationUs)
```

Sets the duration of the video track (in microseconds) to enforce in the output.

The default is `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()`.

| Parameters |
|---|---|
| `long videoDurationUs` | The duration of the video track (in microseconds) to enforce in the output, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` to not enforce. Only applicable when a video track is `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer#addTrack(androidx.media3.common.Format)`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/transformer/DefaultMuxer.Factory` | This factory. |

### supportsWritingNegativeTimestampsInEditList

```
public boolean supportsWritingNegativeTimestampsInEditList()
```

Whether the muxer supports writing negative timestamps into an edit list to instruct players to ignore these samples.