FragmentedMp4Extractor
@UnstableApi
class FragmentedMp4Extractor : Extractor
Extracts data from the FMP4 container format.
Summary
Nested types |
|---|
@DocumentedFlags controlling the behavior of the extractor. |
Constants |
|
|---|---|
const ExtractorsFactory! |
This property is deprecated. Use |
const Int |
Flag to use the source subtitle formats without modification. |
const Int |
Flag to indicate that the extractor should output an event message metadata track. |
const Int |
Flag to enable reading and merging of all sidx boxes before continuing extraction. |
const Int |
Flag to extract additional sample dependency information, and mark output buffers with |
const Int |
Flag to extract additional sample dependency information, and mark output buffers with |
const Int |
Flag to work around an issue in some video streams where every frame is marked as a sync frame. |
const Int |
Flag to ignore any edit lists in the stream. |
const Int |
Flag to ignore any tfdt boxes in the stream. |
Public constructors |
|---|
|
This function is deprecated. Use |
|
This function is deprecated. Use |
FragmentedMp4Extractor(subtitleParserFactory: SubtitleParser.Factory!)Constructs an instance. |
This function is deprecated. Use |
FragmentedMp4Extractor(Constructs an instance. |
This function is deprecated. Use |
This function is deprecated. Use |
This function is deprecated. Use |
FragmentedMp4Extractor(Constructs an instance. |
Public functions |
|
|---|---|
java-static Int |
@FragmentedMp4Extractor.FlagsReturns |
ImmutableList<SniffFailure!>! |
Returns additional details about the last call to |
Unit |
init(output: ExtractorOutput!)Initializes the extractor with an |
java-static ExtractorsFactory! |
newFactory(subtitleParserFactory: SubtitleParser.Factory!)Creates a factory for |
Int |
read(input: ExtractorInput!, seekPosition: PositionHolder!)Extracts data read from a provided |
Unit |
release()Releases all kept resources. |
Unit |
Notifies the extractor that a seek has occurred. |
Boolean |
sniff(input: ExtractorInput!)Returns whether this extractor can extract samples from the |
Protected functions |
|
|---|---|
Track? |
modifyTrack(track: Track?) |
Inherited Constants |
||||||
|---|---|---|---|---|---|---|
|
Inherited functions |
||
|---|---|---|
|
Constants
FLAG_EMIT_RAW_SUBTITLE_DATA
const val FLAG_EMIT_RAW_SUBTITLE_DATA = 32: Int
Flag to use the source subtitle formats without modification. If unset, subtitles will be transcoded to APPLICATION_MEDIA3_CUES during extraction.
FLAG_ENABLE_EMSG_TRACK
const val FLAG_ENABLE_EMSG_TRACK = 4: Int
Flag to indicate that the extractor should output an event message metadata track. Any event messages in the stream will be delivered as samples to this track.
FLAG_MERGE_FRAGMENTED_SIDX
const val FLAG_MERGE_FRAGMENTED_SIDX = 256: Int
Flag to enable reading and merging of all sidx boxes before continuing extraction.
FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES
const val FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES = 64: Int
Flag to extract additional sample dependency information, and mark output buffers with BUFFER_FLAG_NOT_DEPENDED_ON for H.264 video.
This class always marks the samples at the start of each group of picture (GOP) with BUFFER_FLAG_KEY_FRAME. Usually, key frames can be decoded independently, without depending on other samples.
Setting this flag enables elementary stream parsing to identify disposable samples that are not depended on by other samples. Any disposable sample can be safely omitted, and the rest of the track will remain valid.
FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265
const val FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265 = 128: Int
Flag to extract additional sample dependency information, and mark output buffers with BUFFER_FLAG_NOT_DEPENDED_ON for H.265 video.
FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
const val FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME = 1: Int
Flag to work around an issue in some video streams where every frame is marked as a sync frame. The workaround overrides the sync frame flags in the stream, forcing them to false except for the first sample in each segment.
This flag does nothing if the stream is not a video stream.
FLAG_WORKAROUND_IGNORE_EDIT_LISTS
const val FLAG_WORKAROUND_IGNORE_EDIT_LISTS = 16: Int
Flag to ignore any edit lists in the stream.
FLAG_WORKAROUND_IGNORE_TFDT_BOX
const val FLAG_WORKAROUND_IGNORE_TFDT_BOX = 2: Int
Flag to ignore any tfdt boxes in the stream.
Public constructors
FragmentedMp4Extractor
FragmentedMp4Extractor(subtitleParserFactory: SubtitleParser.Factory!)
Constructs an instance.
| Parameters | |
|---|---|
subtitleParserFactory: SubtitleParser.Factory! |
The |
FragmentedMp4Extractor
FragmentedMp4Extractor(
@FragmentedMp4Extractor.Flags flags: Int,
timestampAdjuster: TimestampAdjuster?
)
FragmentedMp4Extractor
FragmentedMp4Extractor(
subtitleParserFactory: SubtitleParser.Factory!,
@FragmentedMp4Extractor.Flags flags: Int
)
Constructs an instance.
| Parameters | |
|---|---|
subtitleParserFactory: SubtitleParser.Factory! |
The |
@FragmentedMp4Extractor.Flags flags: Int |
Flags that control the extractor's behavior. |
FragmentedMp4Extractor
FragmentedMp4Extractor(
@FragmentedMp4Extractor.Flags flags: Int,
timestampAdjuster: TimestampAdjuster?,
sideloadedTrack: Track?
)
FragmentedMp4Extractor
FragmentedMp4Extractor(
@FragmentedMp4Extractor.Flags flags: Int,
timestampAdjuster: TimestampAdjuster?,
sideloadedTrack: Track?,
closedCaptionFormats: (Mutable)List<Format!>!
)
FragmentedMp4Extractor
FragmentedMp4Extractor(
@FragmentedMp4Extractor.Flags flags: Int,
timestampAdjuster: TimestampAdjuster?,
sideloadedTrack: Track?,
closedCaptionFormats: (Mutable)List<Format!>!,
additionalEmsgTrackOutput: TrackOutput?
)
FragmentedMp4Extractor
FragmentedMp4Extractor(
subtitleParserFactory: SubtitleParser.Factory!,
@FragmentedMp4Extractor.Flags flags: Int,
timestampAdjuster: TimestampAdjuster?,
sideloadedTrack: Track?,
closedCaptionFormats: (Mutable)List<Format!>!,
additionalEmsgTrackOutput: TrackOutput?
)
Constructs an instance.
| Parameters | |
|---|---|
subtitleParserFactory: SubtitleParser.Factory! |
The |
@FragmentedMp4Extractor.Flags flags: Int |
Flags that control the extractor's behavior. |
timestampAdjuster: TimestampAdjuster? |
Adjusts sample timestamps. May be null if no adjustment is needed. |
sideloadedTrack: Track? |
Sideloaded track information, in the case that the extractor will not receive a moov box in the input data. Null if a moov box is expected. |
closedCaptionFormats: (Mutable)List<Format!>! |
For tracks that contain SEI messages, the formats of the closed caption channels to expose. |
additionalEmsgTrackOutput: TrackOutput? |
An extra track output that will receive all emsg messages targeting the player, even if |
Public functions
codecsToParseWithinGopSampleDependenciesAsFlags
@FragmentedMp4Extractor.Flags
java-static fun codecsToParseWithinGopSampleDependenciesAsFlags(
@C.VideoCodecFlags videoCodecFlags: Int
): Int
Returns Flags denoting if an extractor should parse within GOP sample dependencies.
| Parameters | |
|---|---|
@C.VideoCodecFlags videoCodecFlags: Int |
The set of codecs for which to parse within GOP sample dependencies. |
getSniffFailureDetails
fun getSniffFailureDetails(): ImmutableList<SniffFailure!>!
Returns additional details about the last call to sniff. The returned list may be empty if no additional details are available, or the last sniff call returned
true.
This only contains details that were discovered before sniff returned
false, it is not an exhaustive list of issues which, if resolved, would cause the file to be successfully sniffed.
init
fun init(output: ExtractorOutput!): Unit
Initializes the extractor with an ExtractorOutput. Called at most once.
| Parameters | |
|---|---|
output: ExtractorOutput! |
An |
newFactory
java-static fun newFactory(subtitleParserFactory: SubtitleParser.Factory!): ExtractorsFactory!
Creates a factory for FragmentedMp4Extractor instances with the provided SubtitleParser.Factory.
read
fun read(input: ExtractorInput!, seekPosition: PositionHolder!): Int
Extracts data read from a provided ExtractorInput. Must not be called before init.
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, RESULT_CONTINUE is returned to indicate that the 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 RESULT_SEEK is returned. If the extractor reached the end of the data provided by the ExtractorInput, then RESULT_END_OF_INPUT is returned.
When this method throws an IOException, extraction may continue by providing an ExtractorInput with an unchanged read position to a subsequent call to this method.
| Parameters | |
|---|---|
input: ExtractorInput! |
The |
seekPosition: PositionHolder! |
If |
| Returns | |
|---|---|
Int |
One of the |
| Throws | |
|---|---|
java.io.IOException |
If an error occurred reading from or parsing the input. |
seek
fun seek(position: Long, timeUs: Long): Unit
Notifies the extractor that a seek has occurred.
Following a call to this method, the ExtractorInput passed to the next invocation of read 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 SeekMap passed to the ExtractorOutput.
sniff
fun sniff(input: ExtractorInput!): Boolean
Returns whether this extractor can extract samples from the 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 | |
|---|---|
input: ExtractorInput! |
The |
| Returns | |
|---|---|
Boolean |
Whether this extractor can read the provided input. |
| Throws | |
|---|---|
java.io.IOException |
If an error occurred reading from the input. |