# TsExtractor

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/ts/TsExtractor.java+class:androidx.media3.extractor.ts.TsExtractor)

*** ** * ** ***


```
@UnstableApi
public final class TsExtractor implements Extractor
```

<br />

*** ** * ** ***

Extracts data from the MPEG-2 TS container format.

## Summary

| ### Nested types |
|---|
| `@https://developer.android.com/reference/java/lang/annotation/Documented.html @https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/java/lang/annotation/Target.html(value = https://developer.android.com/reference/java/lang/annotation/ElementType.html#TYPE_USE) @https://developer.android.com/reference/androidx/annotation/IntDef(flag = true, value = ) public annotation https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Flags` Flags controlling the behavior of the extractor. |
| `@https://developer.android.com/reference/java/lang/annotation/Documented.html @https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/java/lang/annotation/Target.html(value = https://developer.android.com/reference/java/lang/annotation/ElementType.html#TYPE_USE) @https://developer.android.com/reference/androidx/annotation/IntDef(value = ) public annotation https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Mode` Modes for the extractor. |

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#DEFAULT_TIMESTAMP_SEARCH_BYTES() = 112800` |
| `static final https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#FACTORY()` **This field is deprecated.** Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#newFactory(androidx.media3.extractor.text.SubtitleParser.Factory)` instead. <br /> |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#FLAG_EMIT_RAW_SUBTITLE_DATA() = 1` Flag to use the source subtitle formats without modification. |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#MODE_HLS() = 2` Enable single PMT mode, map `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput`s by their type (instead of PID) and ignore continuity counters. |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#MODE_MULTI_PMT() = 0` Behave as defined in ISO/IEC 13818-1. |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#MODE_SINGLE_PMT() = 1` Assume only one PMT will be contained in the stream, even if more are declared by the PAT. |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_PACKET_SIZE() = 188` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_AAC_ADTS() = 15` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_AAC_LATM() = 17` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_AC3() = 129` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_AC4() = 172` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_AIT() = 257` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_DC2_H262() = 128` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_DTS() = 138` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_DTS_HD() = 136` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_DTS_UHD() = 139` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_DVBSUBS() = 89` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_E_AC3() = 135` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_H262() = 2` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_H263() = 16` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_H264() = 27` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_H265() = 36` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_HDMV_DTS() = 130` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_ID3() = 21` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_MHAS() = 45` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_MPA() = 3` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_MPA_LSF() = 4` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_STREAM_TYPE_SPLICE_INFO() = 134` |
| `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TS_SYNC_BYTE() = 71` |

| ### Public constructors |
|---|
| `[TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor())()` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(androidx.media3.extractor.text.SubtitleParser.Factory)` instead. <br /> |
| `[TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int))( @https://developer.android.com/reference/androidx/media3/extractor/ts/DefaultTsPayloadReaderFactory.Flags int defaultTsPayloadReaderFlags )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(androidx.media3.extractor.text.SubtitleParser.Factory)(https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory)` Constructs an instance. |
| `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,androidx.media3.extractor.text.SubtitleParser.Factory)( @https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Flags int extractorFlags, https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory )` Constructs an instance. |
| `[TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,int))( @https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Mode int mode, @https://developer.android.com/reference/androidx/media3/extractor/ts/DefaultTsPayloadReaderFactory.Flags int defaultTsPayloadReaderFlags, int timestampSearchBytes )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead. <br /> |
| `[TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory))( @https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Mode int mode, https://developer.android.com/reference/androidx/media3/common/util/TimestampAdjuster timestampAdjuster, https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.Factory payloadReaderFactory )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead. <br /> |
| `[TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int))( @https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Mode int mode, https://developer.android.com/reference/androidx/media3/common/util/TimestampAdjuster timestampAdjuster, https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.Factory payloadReaderFactory, int timestampSearchBytes )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)( @https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Mode int mode, @https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Flags int extractorFlags, https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory, https://developer.android.com/reference/androidx/media3/common/util/TimestampAdjuster timestampAdjuster, https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.Factory payloadReaderFactory, int timestampSearchBytes )` Constructs an instance. |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#init(androidx.media3.extractor.ExtractorOutput)(https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput output)` Initializes the extractor with an `https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput`. |
| `static https://developer.android.com/reference/androidx/media3/extractor/ExtractorsFactory` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#newFactory(androidx.media3.extractor.text.SubtitleParser.Factory)(https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory)` Creates a factory for `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor` instances with the provided `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory`. |
| `int` | `@https://developer.android.com/reference/androidx/media3/extractor/Extractor.ReadResult https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)(https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput input, https://developer.android.com/reference/androidx/media3/extractor/PositionHolder seekPosition)` Extracts data read from a provided `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput`. |
| `void` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#release()()` Releases all kept resources. |
| `void` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#seek(long,long)(long position, long timeUs)` Notifies the extractor that a seek has occurred. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#sniff(androidx.media3.extractor.ExtractorInput)(https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput input)` Returns whether this extractor can extract samples from the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput`, which must provide data from the start of the stream. |

| ### Inherited Constants |
|---|
| From [androidx.media3.extractor.Extractor](https://developer.android.com/reference/androidx/media3/extractor/Extractor) |---|---| | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/Extractor#RESULT_CONTINUE() = 0` Returned by `https://developer.android.com/reference/androidx/media3/extractor/Extractor#read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)` if the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` passed to the next `https://developer.android.com/reference/androidx/media3/extractor/Extractor#read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)` is required to provide data continuing from the position in the stream reached by the returning call. | | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/Extractor#RESULT_END_OF_INPUT() = -1` Returned by `https://developer.android.com/reference/androidx/media3/extractor/Extractor#read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)` if the end of the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` was reached. | | `static final int` | `https://developer.android.com/reference/androidx/media3/extractor/Extractor#RESULT_SEEK() = 1` Returned by `https://developer.android.com/reference/androidx/media3/extractor/Extractor#read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)` if the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` passed to the next `https://developer.android.com/reference/androidx/media3/extractor/Extractor#read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)` is required to provide data starting from a specified position in the stream. | |

| ### Inherited methods |
|---|
| From [androidx.media3.extractor.Extractor](https://developer.android.com/reference/androidx/media3/extractor/Extractor) |---|---| | `https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/extractor/SniffFailure>` | `https://developer.android.com/reference/androidx/media3/extractor/Extractor#getSniffFailureDetails()()` Returns additional details about the last call to `https://developer.android.com/reference/androidx/media3/extractor/Extractor#sniff(androidx.media3.extractor.ExtractorInput)`. | | `https://developer.android.com/reference/androidx/media3/extractor/Extractor` | `@https://checkerframework.org/api/org/checkerframework/dataflow/qual/SideEffectFree.html https://developer.android.com/reference/androidx/media3/extractor/Extractor#getUnderlyingImplementation()()` Returns the 'real' `Extractor` implementation if this is a delegating instance, or ` this` if this instance does the extraction directly without delegating (the default behaviour). | |

## Constants

### DEFAULT_TIMESTAMP_SEARCH_BYTES

```
public static final int DEFAULT_TIMESTAMP_SEARCH_BYTES = 112800
```

### FACTORY

```
public static final ExtractorsFactory FACTORY
```

> [!CAUTION]
> **This field is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#newFactory(androidx.media3.extractor.text.SubtitleParser.Factory)` instead.

### FLAG_EMIT_RAW_SUBTITLE_DATA

```
public static final int FLAG_EMIT_RAW_SUBTITLE_DATA = 1
```

Flag to use the source subtitle formats without modification. If unset, subtitles will be transcoded to `https://developer.android.com/reference/androidx/media3/common/MimeTypes#APPLICATION_MEDIA3_CUES()` during extraction.

### MODE_HLS

```
public static final int MODE_HLS = 2
```

Enable single PMT mode, map `https://developer.android.com/reference/androidx/media3/extractor/TrackOutput`s by their type (instead of PID) and ignore continuity counters.

### MODE_MULTI_PMT

```
public static final int MODE_MULTI_PMT = 0
```

Behave as defined in ISO/IEC 13818-1.

### MODE_SINGLE_PMT

```
public static final int MODE_SINGLE_PMT = 1
```

Assume only one PMT will be contained in the stream, even if more are declared by the PAT.

### TS_PACKET_SIZE

```
public static final int TS_PACKET_SIZE = 188
```

### TS_STREAM_TYPE_AAC_ADTS

```
public static final int TS_STREAM_TYPE_AAC_ADTS = 15
```

### TS_STREAM_TYPE_AAC_LATM

```
public static final int TS_STREAM_TYPE_AAC_LATM = 17
```

### TS_STREAM_TYPE_AC3

```
public static final int TS_STREAM_TYPE_AC3 = 129
```

### TS_STREAM_TYPE_AC4

```
public static final int TS_STREAM_TYPE_AC4 = 172
```

### TS_STREAM_TYPE_AIT

```
public static final int TS_STREAM_TYPE_AIT = 257
```

### TS_STREAM_TYPE_DC2_H262

```
public static final int TS_STREAM_TYPE_DC2_H262 = 128
```

### TS_STREAM_TYPE_DTS

```
public static final int TS_STREAM_TYPE_DTS = 138
```

### TS_STREAM_TYPE_DTS_HD

```
public static final int TS_STREAM_TYPE_DTS_HD = 136
```

### TS_STREAM_TYPE_DTS_UHD

```
public static final int TS_STREAM_TYPE_DTS_UHD = 139
```

### TS_STREAM_TYPE_DVBSUBS

```
public static final int TS_STREAM_TYPE_DVBSUBS = 89
```

### TS_STREAM_TYPE_E_AC3

```
public static final int TS_STREAM_TYPE_E_AC3 = 135
```

### TS_STREAM_TYPE_H262

```
public static final int TS_STREAM_TYPE_H262 = 2
```

### TS_STREAM_TYPE_H263

```
public static final int TS_STREAM_TYPE_H263 = 16
```

### TS_STREAM_TYPE_H264

```
public static final int TS_STREAM_TYPE_H264 = 27
```

### TS_STREAM_TYPE_H265

```
public static final int TS_STREAM_TYPE_H265 = 36
```

### TS_STREAM_TYPE_HDMV_DTS

```
public static final int TS_STREAM_TYPE_HDMV_DTS = 130
```

### TS_STREAM_TYPE_ID3

```
public static final int TS_STREAM_TYPE_ID3 = 21
```

### TS_STREAM_TYPE_MHAS

```
public static final int TS_STREAM_TYPE_MHAS = 45
```

### TS_STREAM_TYPE_MPA

```
public static final int TS_STREAM_TYPE_MPA = 3
```

### TS_STREAM_TYPE_MPA_LSF

```
public static final int TS_STREAM_TYPE_MPA_LSF = 4
```

### TS_STREAM_TYPE_SPLICE_INFO

```
public static final int TS_STREAM_TYPE_SPLICE_INFO = 134
```

### TS_SYNC_BYTE

```
public static final int TS_SYNC_BYTE = 71
```

## Public constructors

### TsExtractor

```
public [TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor())()
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(androidx.media3.extractor.text.SubtitleParser.Factory)` instead.

### TsExtractor

```
public [TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int))(
    @DefaultTsPayloadReaderFactory.Flags int defaultTsPayloadReaderFlags
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead.

### TsExtractor

```
public TsExtractor(SubtitleParser.Factory subtitleParserFactory)
```

Constructs an instance.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory` | The `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory` for parsing subtitles during extraction. |

### TsExtractor

```
public TsExtractor(
    @TsExtractor.Flags int extractorFlags,
    SubtitleParser.Factory subtitleParserFactory
)
```

Constructs an instance.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Flags int extractorFlags` | Flags that control the extractor's behavior. |
| `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory` | The `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory` for parsing subtitles during extraction. |

### TsExtractor

```
public [TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,int))(
    @TsExtractor.Mode int mode,
    @DefaultTsPayloadReaderFactory.Flags int defaultTsPayloadReaderFlags,
    int timestampSearchBytes
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead.

### TsExtractor

```
public [TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory))(
    @TsExtractor.Mode int mode,
    TimestampAdjuster timestampAdjuster,
    TsPayloadReader.Factory payloadReaderFactory
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead.

### TsExtractor

```
public [TsExtractor](https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int))(
    @TsExtractor.Mode int mode,
    TimestampAdjuster timestampAdjuster,
    TsPayloadReader.Factory payloadReaderFactory,
    int timestampSearchBytes
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#TsExtractor(int,int,androidx.media3.extractor.text.SubtitleParser.Factory,androidx.media3.common.util.TimestampAdjuster,androidx.media3.extractor.ts.TsPayloadReader.Factory,int)` instead.

### TsExtractor

```
public TsExtractor(
    @TsExtractor.Mode int mode,
    @TsExtractor.Flags int extractorFlags,
    SubtitleParser.Factory subtitleParserFactory,
    TimestampAdjuster timestampAdjuster,
    TsPayloadReader.Factory payloadReaderFactory,
    int timestampSearchBytes
)
```

Constructs an instance.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Mode int mode` | Mode for the extractor. One of `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#MODE_MULTI_PMT()`, `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#MODE_SINGLE_PMT()` and `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#MODE_HLS()`. |
| `@https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor.Flags int extractorFlags` | Flags that control the extractor's behavior. |
| `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory subtitleParserFactory` | The `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory` for parsing subtitles during extraction. |
| `https://developer.android.com/reference/androidx/media3/common/util/TimestampAdjuster timestampAdjuster` | A timestamp adjuster for offsetting and scaling sample timestamps. |
| `https://developer.android.com/reference/androidx/media3/extractor/ts/TsPayloadReader.Factory payloadReaderFactory` | Factory for injecting a custom set of payload readers. |
| `int timestampSearchBytes` | The number of bytes searched from a given position in the stream to find a PCR timestamp. If this value is too small, the duration might be unknown and seeking might not be supported for high bitrate progressive streams. Setting a large value for this field might be inefficient though because the extractor stores a buffer of ` timestampSearchBytes` bytes when determining the duration or when performing a seek operation. The default value is `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor#DEFAULT_TIMESTAMP_SEARCH_BYTES()`. If the number of bytes left in the stream from the current position is less than ` timestampSearchBytes`, the search is performed on the bytes left. |

## Public methods

### init

```
public void init(ExtractorOutput output)
```

Initializes the extractor with an `https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput`. Called at most once.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput output` | An `https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput` to receive extracted data. |

### newFactory

```
public static ExtractorsFactory newFactory(SubtitleParser.Factory subtitleParserFactory)
```

Creates a factory for `https://developer.android.com/reference/androidx/media3/extractor/ts/TsExtractor` instances with the provided `https://developer.android.com/reference/androidx/media3/extractor/text/SubtitleParser.Factory`.

### read

```
@Extractor.ReadResult
public int read(ExtractorInput input, PositionHolder seekPosition)
```

Extracts data read from a provided `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput`. Must not be called before `https://developer.android.com/reference/androidx/media3/extractor/Extractor#init(androidx.media3.extractor.ExtractorOutput)`.

A single call to this method will block until some progress has been made, but will not block for longer than this. Hence each call will consume only a small amount of input data.

In the common case, `https://developer.android.com/reference/androidx/media3/extractor/Extractor#RESULT_CONTINUE()` is returned to indicate that the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` passed to the next read is required to provide data continuing from the position in the stream reached by the returning call. If the extractor requires data to be provided from a different position, then that position is set in `seekPosition` and `https://developer.android.com/reference/androidx/media3/extractor/Extractor#RESULT_SEEK()` is returned. If the extractor reached the end of the data provided by the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput`, then `https://developer.android.com/reference/androidx/media3/extractor/Extractor#RESULT_END_OF_INPUT()` is returned.

When this method throws an `https://developer.android.com/reference/java/io/IOException.html`, extraction may continue by providing an `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` with an unchanged `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput#getPosition()` to a subsequent call to this method.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput input` | The `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` from which data should be read. |
| `https://developer.android.com/reference/androidx/media3/extractor/PositionHolder seekPosition` | If `https://developer.android.com/reference/androidx/media3/extractor/Extractor#RESULT_SEEK()` is returned, this holder is updated to hold the position of the required data. |

| Returns |
|---|---|
| `int` | One of the `RESULT_` values defined in this interface. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html` | If an error occurred reading from or parsing the input. |

### release

```
public void release()
```

Releases all kept resources.

### seek

```
public void seek(long position, long timeUs)
```

Notifies the extractor that a seek has occurred.

Following a call to this method, the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` passed to the next invocation of `https://developer.android.com/reference/androidx/media3/extractor/Extractor#read(androidx.media3.extractor.ExtractorInput,androidx.media3.extractor.PositionHolder)` is required to provide data starting from `
position` in the stream. Valid random access positions are the start of the stream and positions that can be obtained from any `https://developer.android.com/reference/androidx/media3/extractor/SeekMap` passed to the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorOutput`.

| Parameters |
|---|---|
| `long position` | The byte offset in the stream from which data will be provided. |
| `long timeUs` | The seek time in microseconds. |

### sniff

```
public boolean sniff(ExtractorInput input)
```

Returns whether this extractor can extract samples from the `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput`, which must provide data from the start of the stream.

If `true` is returned, the `input`'s reading position may have been modified. Otherwise, only its peek position may have been modified.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput input` | The `https://developer.android.com/reference/androidx/media3/extractor/ExtractorInput` from which data should be peeked/read. |

| Returns |
|---|---|
| `boolean` | Whether this extractor can read the provided input. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html` | If an error occurred reading from the input. |