# ExtractorsFactory

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

*** ** * ** ***


```
@UnstableApi
public interface ExtractorsFactory
```

<br />

Known direct subclasses [DefaultExtractorsFactory](https://developer.android.com/reference/androidx/media3/extractor/DefaultExtractorsFactory), [ForwardingExtractorsFactory](https://developer.android.com/reference/androidx/media3/extractor/ForwardingExtractorsFactory)

|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/DefaultExtractorsFactory` | An `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` that provides an array of extractors for the following formats: |
| `https://developer.android.com/reference/androidx/media3/extractor/ForwardingExtractorsFactory` | A forwarding `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` that forwards all methods to the underlying implementation. |

*** ** * ** ***

Factory for arrays of `https://developer.android.com/reference/androidx/media3/extractor/Extractor` instances.

## Summary

| ### Constants |
|---|---|
| `default static final https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#EMPTY()` Extractor factory that returns an empty list of extractors. |

| ### Public methods |
|---|---|
| `abstract Extractor[]` | `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#createExtractors()()` Returns an array of new `https://developer.android.com/reference/androidx/media3/extractor/Extractor` instances. |
| `default Extractor[]` | `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#createExtractors(android.net.Uri,java.util.Map<java.lang.String,java.util.List<java.lang.String>>)(https://developer.android.com/reference/android/net/Uri.html uri, https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html>> responseHeaders)` Returns an array of new `https://developer.android.com/reference/androidx/media3/extractor/Extractor` instances. |
| `default https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html @https://developer.android.com/reference/androidx/media3/common/util/ExperimentalApi [experimentalSetTextTrackTranscodingEnabled](https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#experimentalSetTextTrackTranscodingEnabled(boolean))( boolean textTrackTranscodingEnabled )` **This method is deprecated.** This method (and all support for 'legacy' subtitle decoding during rendering) will be removed in a future release. <br /> |
| `default https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#setParseHagcMetadata(boolean)(boolean parseHagcMetadata)` Sets whether to parse HAGC (ST 2094-50) metadata. |
| `default https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#setSubtitleParserFactory(androidx.media3.extractor.text.SubtitleParser.Factory)(https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory)` Sets a `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory` to use when transcoding text tracks. |

## Constants

### EMPTY

```
default static final ExtractorsFactory EMPTY
```

Extractor factory that returns an empty list of extractors. Can be used whenever `https://developer.android.com/reference/androidx/media3/extractor/Extractor` are not required.

## Public methods

### createExtractors

```
abstract Extractor[] createExtractors()
```

Returns an array of new `https://developer.android.com/reference/androidx/media3/extractor/Extractor` instances.

### createExtractors

```
default Extractor[] createExtractors(Uri uri, Map<String, List<String>> responseHeaders)
```

Returns an array of new `https://developer.android.com/reference/androidx/media3/extractor/Extractor` instances.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/net/Uri.html uri` | The `https://developer.android.com/reference/android/net/Uri.html` of the media to extract. |
| `https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/String.html>> responseHeaders` | The response headers of the media to extract, or an empty map if there are none. The map lookup should be case-insensitive. |

| Returns |
|---|---|
| `Extractor[]` | The `https://developer.android.com/reference/androidx/media3/extractor/Extractor` instances. |

### experimentalSetTextTrackTranscodingEnabled

```
@CanIgnoreReturnValue
@ExperimentalApi
default ExtractorsFactory [experimentalSetTextTrackTranscodingEnabled](https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#experimentalSetTextTrackTranscodingEnabled(boolean))(
    boolean textTrackTranscodingEnabled
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> This method (and all support for 'legacy' subtitle decoding during rendering) will be removed in a future release.

Enables transcoding of text track samples to `https://developer.android.com/reference/androidx/media3/common/MimeTypes#APPLICATION_MEDIA3_CUES()` before the data is emitted to `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput`.

Transcoding is enabled by default.

This method is experimental and will be renamed or removed in a future release.

| Parameters |
|---|---|
| `boolean textTrackTranscodingEnabled` | Whether to enable transcoding. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | The factory, for convenience. |

### setParseHagcMetadata

```
@CanIgnoreReturnValue
default ExtractorsFactory setParseHagcMetadata(boolean parseHagcMetadata)
```

Sets whether to parse HAGC (ST 2094-50) metadata.

| Parameters |
|---|---|
| `boolean parseHagcMetadata` | Whether HAGC metadata parsing is enabled. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | This factory, for convenience. |

### setSubtitleParserFactory

```
default ExtractorsFactory setSubtitleParserFactory(SubtitleParser.Factory subtitleParserFactory)
```

Sets a `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory` to use when transcoding text tracks.

This is only works if `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory#experimentalSetTextTrackTranscodingEnabled(boolean)` is enabled.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory` | The factory for `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser` instances. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | The factory, for convenience. |