MediaParser
public
final
class
MediaParser
extends Object
java.lang.Object | |
↳ | android.media.MediaParser |
Parses media container formats and extracts contained media samples and metadata.
This class provides access to a battery of low-level media container parsers. Each instance of
this class is associated to a specific media parser implementation which is suitable for
extraction from a specific media container format. The media parser implementation assignment
depends on the factory method (see create(OutputConsumer, String)
and createByName(String, OutputConsumer)
) used to create the
instance.
Users must implement the following to use this class.
InputReader
: Provides the media container's bytes to parse.OutputConsumer
: Provides a sink for all extracted data and metadata.
The following code snippet includes a usage example:
MyOutputConsumer myOutputConsumer = new MyOutputConsumer(); MyInputReader myInputReader = new MyInputReader("www.example.com"); MediaParser mediaParser = MediaParser.create(myOutputConsumer); while (mediaParser.advance(myInputReader)) {} mediaParser.release(); mediaParser = null;
The following code snippet provides a rudimentary OutputConsumer
sample implementation
which extracts and publishes all video samples:
class VideoOutputConsumer implements MediaParser.OutputConsumer { private byte[] sampleDataBuffer = new byte[4096]; private byte[] discardedDataBuffer = new byte[4096]; private int videoTrackIndex = -1; private int bytesWrittenCount = 0; @Override public void onSeekMapFound(int i, @NonNull MediaFormat mediaFormat) { // Do nothing. } @Override public void onTrackDataFound(int i, @NonNull TrackData trackData) { MediaFormat mediaFormat = trackData.mediaFormat; if (videoTrackIndex == -1 && mediaFormat .getString(MediaFormat.KEY_MIME, /* defaultValue= */ "") .startsWith("video/")) { videoTrackIndex = i; } } @Override public void onSampleDataFound(int trackIndex, @NonNull InputReader inputReader) throws IOException { int numberOfBytesToRead = (int) inputReader.getLength(); if (videoTrackIndex != trackIndex) { // Discard contents. inputReader.read( discardedDataBuffer, /* offset= */ 0, Math.min(discardDataBuffer.length, numberOfBytesToRead)); } else { ensureSpaceInBuffer(numberOfBytesToRead); int bytesRead = inputReader.read( sampleDataBuffer, bytesWrittenCount, numberOfBytesToRead); bytesWrittenCount += bytesRead; } } @Override public void onSampleCompleted( int trackIndex, long timeMicros, int flags, int size, int offset, @Nullable CryptoInfo cryptoData) { if (videoTrackIndex != trackIndex) { return; // It's not the video track. Ignore. } byte[] sampleData = new byte[size]; int sampleStartOffset = bytesWrittenCount - size - offset; System.arraycopy( sampleDataBuffer, sampleStartOffset, sampleData, /* destPos= */ 0, size); // Place trailing bytes at the start of the buffer. System.arraycopy( sampleDataBuffer, bytesWrittenCount - offset, sampleDataBuffer, /* destPos= */ 0, /* size= */ offset); bytesWrittenCount = bytesWrittenCount - offset; publishSample(sampleData, timeMicros, flags); } private void ensureSpaceInBuffer(int numberOfBytesToRead) { int requiredLength = bytesWrittenCount + numberOfBytesToRead; if (requiredLength > sampleDataBuffer.length) { sampleDataBuffer = Arrays.copyOf(sampleDataBuffer, requiredLength); } } }
Summary
Nested classes | |
---|---|
interface |
MediaParser.InputReader
Provides input data to |
interface |
MediaParser.OutputConsumer
Receives extracted media sample data and metadata from |
class |
MediaParser.ParsingException
Thrown when an error occurs while parsing a media stream. |
class |
MediaParser.SeekMap
Maps seek positions to |
class |
MediaParser.SeekPoint
Defines a seek point in a media stream. |
interface |
MediaParser.SeekableInputReader
|
class |
MediaParser.TrackData
Holds information associated with a track. |
class |
MediaParser.UnrecognizedInputFormatException
Thrown if all parser implementations provided to |
Constants | |
---|---|
String |
PARAMETER_ADTS_ENABLE_CBR_SEEKING
Sets whether constant bitrate seeking should be enabled for ADTS parsing. |
String |
PARAMETER_AMR_ENABLE_CBR_SEEKING
Sets whether constant bitrate seeking should be enabled for AMR. |
String |
PARAMETER_FLAC_DISABLE_ID3
Sets whether the ID3 track should be disabled for FLAC. |
String |
PARAMETER_MATROSKA_DISABLE_CUES_SEEKING
Sets whether Matroska parsing should avoid seeking to the cues element. |
String |
PARAMETER_MP3_DISABLE_ID3
Sets whether the ID3 track should be disabled for MP3. |
String |
PARAMETER_MP3_ENABLE_CBR_SEEKING
Sets whether constant bitrate seeking should be enabled for MP3. |
String |
PARAMETER_MP3_ENABLE_INDEX_SEEKING
Sets whether MP3 parsing should generate a time-to-byte mapping. |
String |
PARAMETER_MP4_IGNORE_EDIT_LISTS
Sets whether MP4 parsing should ignore edit lists. |
String |
PARAMETER_MP4_IGNORE_TFDT_BOX
Sets whether MP4 parsing should ignore the tfdt box. |
String |
PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES
Sets whether MP4 parsing should treat all video frames as key frames. |
String |
PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES
Sets whether TS should treat samples consisting of non-IDR I slices as synchronization samples (key-frames). |
String |
PARAMETER_TS_DETECT_ACCESS_UNITS
Sets whether TS parsing should split AVC stream into access units based on slice headers. |
String |
PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS
Sets whether TS parsing should handle HDMV DTS audio streams. |
String |
PARAMETER_TS_IGNORE_AAC_STREAM
Sets whether TS parsing should ignore AAC elementary streams. |
String |
PARAMETER_TS_IGNORE_AVC_STREAM
Sets whether TS parsing should ignore AVC elementary streams. |
String |
PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM
Sets whether TS parsing should ignore splice information streams. |
String |
PARAMETER_TS_MODE
Sets the operation mode for TS parsing. |
String |
PARSER_NAME_AC3
Parser for the AC-3 container format, as defined in Digital Audio Compression Standard (AC-3). |
String |
PARSER_NAME_AC4
Parser for the AC-4 container format, as defined by Dolby AC-4: Audio delivery for Next-Generation Entertainment Services. |
String |
PARSER_NAME_ADTS
Parser for the ADTS container format, as defined in ISO/IEC 13818-7. |
String |
PARSER_NAME_AMR
Parser for the AMR container format, as defined in RFC 4867. |
String |
PARSER_NAME_FLAC
Parser for the FLAC container format, as defined in the spec. |
String |
PARSER_NAME_FLV
Parser for the FLV container format, as defined in Adobe Flash Video File Format Specification. |
String |
PARSER_NAME_FMP4
Parser for fragmented files using the MP4 container format, as defined in ISO/IEC 14496-12. |
String |
PARSER_NAME_MATROSKA
Parser for the Matroska container format, as defined in the spec. |
String |
PARSER_NAME_MP3
Parser for the MP3 container format, as defined in ISO/IEC 11172-3. |
String |
PARSER_NAME_MP4
Parser for non-fragmented files using the MP4 container format, as defined in ISO/IEC 14496-12. |
String |
PARSER_NAME_OGG
Parser for the OGG container format, as defined in RFC 3533. |
String |
PARSER_NAME_PS
Parser for the PS container format, as defined in ISO/IEC 11172-1. |
String |
PARSER_NAME_TS
Parser for the TS container format, as defined in ISO/IEC 13818-1. |
String |
PARSER_NAME_UNKNOWN
Parser name returned by |
String |
PARSER_NAME_WAV
Parser for the WAV container format, as defined in Multimedia Programming Interface and Data Specifications. |
int |
SAMPLE_FLAG_DECODE_ONLY
Indicates that the sample should be decoded but not rendered. |
int |
SAMPLE_FLAG_ENCRYPTED
Indicates that the sample is (at least partially) encrypted. |
int |
SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA
Indicates that the sample has supplemental data. |
int |
SAMPLE_FLAG_KEY_FRAME
Indicates that the sample holds a synchronization sample. |
int |
SAMPLE_FLAG_LAST_SAMPLE
Indicates that the sample is known to contain the last media sample of the stream. |
Public methods | |
---|---|
boolean
|
advance(MediaParser.SeekableInputReader seekableInputReader)
Makes progress in the extraction of the input media stream, unless the end of the input has been reached. |
static
MediaParser
|
create(MediaParser.OutputConsumer outputConsumer, String... parserNames)
Creates an instance whose backing parser will be selected by sniffing the content during the
first |
static
MediaParser
|
createByName(String name, MediaParser.OutputConsumer outputConsumer)
Creates an instance backed by the parser with the given |
LogSessionId
|
getLogSessionId()
|
String
|
getParserName()
Returns the name of the backing parser implementation. |
static
List<String>
|
getParserNames(MediaFormat mediaFormat)
Returns an immutable list with the names of the parsers that are suitable for container
formats with the given |
void
|
release()
Releases any acquired resources. |
void
|
seek(MediaParser.SeekPoint seekPoint)
Seeks within the media container being extracted. |
void
|
setLogSessionId(LogSessionId logSessionId)
|
MediaParser
|
setParameter(String parameterName, Object value)
Sets parser-specific parameters which allow customizing behavior. |
boolean
|
supportsParameter(String parameterName)
Returns whether the given |
Inherited methods | |
---|---|
Constants
PARAMETER_ADTS_ENABLE_CBR_SEEKING
public static final String PARAMETER_ADTS_ENABLE_CBR_SEEKING
Sets whether constant bitrate seeking should be enabled for ADTS parsing. boolean
expected. Default value is false
.
Constant Value: "android.media.mediaparser.adts.enableCbrSeeking"
PARAMETER_AMR_ENABLE_CBR_SEEKING
public static final String PARAMETER_AMR_ENABLE_CBR_SEEKING
Sets whether constant bitrate seeking should be enabled for AMR. boolean
expected.
Default value is false
.
Constant Value: "android.media.mediaparser.amr.enableCbrSeeking"
PARAMETER_FLAC_DISABLE_ID3
public static final String PARAMETER_FLAC_DISABLE_ID3
Sets whether the ID3 track should be disabled for FLAC. boolean
expected. Default
value is false
.
Constant Value: "android.media.mediaparser.flac.disableId3"
PARAMETER_MATROSKA_DISABLE_CUES_SEEKING
public static final String PARAMETER_MATROSKA_DISABLE_CUES_SEEKING
Sets whether Matroska parsing should avoid seeking to the cues element. boolean
expected. Default value is false
.
If this flag is enabled and the cues element occurs after the first cluster, then the media is treated as unseekable.
Constant Value: "android.media.mediaparser.matroska.disableCuesSeeking"
PARAMETER_MP3_DISABLE_ID3
public static final String PARAMETER_MP3_DISABLE_ID3
Sets whether the ID3 track should be disabled for MP3. boolean
expected. Default
value is false
.
Constant Value: "android.media.mediaparser.mp3.disableId3"
PARAMETER_MP3_ENABLE_CBR_SEEKING
public static final String PARAMETER_MP3_ENABLE_CBR_SEEKING
Sets whether constant bitrate seeking should be enabled for MP3. boolean
expected.
Default value is false
.
Constant Value: "android.media.mediaparser.mp3.enableCbrSeeking"
PARAMETER_MP3_ENABLE_INDEX_SEEKING
public static final String PARAMETER_MP3_ENABLE_INDEX_SEEKING
Sets whether MP3 parsing should generate a time-to-byte mapping. boolean
expected.
Default value is false
.
Enabling this flag may require to scan a significant portion of the file to compute a seek point. Therefore, it should only be used if:
- the file is small, or
- the bitrate is variable (or the type of bitrate is unknown) and the seeking metadata provided in the file is not precise enough (or is not present).
Constant Value: "android.media.mediaparser.mp3.enableIndexSeeking"
PARAMETER_MP4_IGNORE_EDIT_LISTS
public static final String PARAMETER_MP4_IGNORE_EDIT_LISTS
Sets whether MP4 parsing should ignore edit lists. boolean
expected. Default value is
false
.
Constant Value: "android.media.mediaparser.mp4.ignoreEditLists"
PARAMETER_MP4_IGNORE_TFDT_BOX
public static final String PARAMETER_MP4_IGNORE_TFDT_BOX
Sets whether MP4 parsing should ignore the tfdt box. boolean
expected. Default value
is false
.
Constant Value: "android.media.mediaparser.mp4.ignoreTfdtBox"
PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES
public static final String PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES
Sets whether MP4 parsing should treat all video frames as key frames. boolean
expected. Default value is false
.
Constant Value: "android.media.mediaparser.mp4.treatVideoFramesAsKeyframes"
PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES
public static final String PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES
Sets whether TS should treat samples consisting of non-IDR I slices as synchronization
samples (key-frames). boolean
expected. Default value is false
.
Constant Value: "android.media.mediaparser.ts.allowNonIdrAvcKeyframes"
PARAMETER_TS_DETECT_ACCESS_UNITS
public static final String PARAMETER_TS_DETECT_ACCESS_UNITS
Sets whether TS parsing should split AVC stream into access units based on slice headers.
boolean
expected. Default value is false
.
This flag should be left disabled if the stream contains access units delimiters in order to avoid unnecessary computational costs.
Constant Value: "android.media.mediaparser.ts.ignoreDetectAccessUnits"
PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS
public static final String PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS
Sets whether TS parsing should handle HDMV DTS audio streams. boolean
expected.
Default value is false
.
Enabling this flag will disable the detection of SCTE subtitles.
Constant Value: "android.media.mediaparser.ts.enableHdmvDtsAudioStreams"
PARAMETER_TS_IGNORE_AAC_STREAM
public static final String PARAMETER_TS_IGNORE_AAC_STREAM
Sets whether TS parsing should ignore AAC elementary streams. boolean
expected.
Default value is false
.
Constant Value: "android.media.mediaparser.ts.ignoreAacStream"
PARAMETER_TS_IGNORE_AVC_STREAM
public static final String PARAMETER_TS_IGNORE_AVC_STREAM
Sets whether TS parsing should ignore AVC elementary streams. boolean
expected.
Default value is false
.
Constant Value: "android.media.mediaparser.ts.ignoreAvcStream"
PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM
public static final String PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM
Sets whether TS parsing should ignore splice information streams. boolean
expected.
Default value is false
.
Constant Value: "android.media.mediaparser.ts.ignoreSpliceInfoStream"
PARAMETER_TS_MODE
public static final String PARAMETER_TS_MODE
Sets the operation mode for TS parsing. String
expected. Valid values are "single_pmt"
, "multi_pmt"
, and "hls"
. Default value is "single_pmt"
.
The operation modes alter the way TS behaves so that it can handle certain kinds of commonly-occurring malformed media.
"single_pmt"
: Only the first found PMT is parsed. Others are ignored, even if more PMTs are declared in the PAT."multi_pmt"
: Behave as described in ISO/IEC 13818-1."hls"
: Enable"single_pmt"
mode, and ignore continuity counters.
Constant Value: "android.media.mediaparser.ts.mode"
PARSER_NAME_AC3
public static final String PARSER_NAME_AC3
Parser for the AC-3 container format, as defined in Digital Audio Compression Standard (AC-3).
Constant Value: "android.media.mediaparser.Ac3Parser"
PARSER_NAME_AC4
public static final String PARSER_NAME_AC4
Parser for the AC-4 container format, as defined by Dolby AC-4: Audio delivery for Next-Generation Entertainment Services.
Constant Value: "android.media.mediaparser.Ac4Parser"
PARSER_NAME_ADTS
public static final String PARSER_NAME_ADTS
Parser for the ADTS container format, as defined in ISO/IEC 13818-7.
Constant Value: "android.media.mediaparser.AdtsParser"
PARSER_NAME_AMR
public static final String PARSER_NAME_AMR
Parser for the AMR container format, as defined in RFC 4867.
Constant Value: "android.media.mediaparser.AmrParser"
PARSER_NAME_FLAC
public static final String PARSER_NAME_FLAC
Parser for the FLAC container format, as defined in the spec.
Constant Value: "android.media.mediaparser.FlacParser"
PARSER_NAME_FLV
public static final String PARSER_NAME_FLV
Parser for the FLV container format, as defined in Adobe Flash Video File Format Specification.
Constant Value: "android.media.mediaparser.FlvParser"
PARSER_NAME_FMP4
public static final String PARSER_NAME_FMP4
Parser for fragmented files using the MP4 container format, as defined in ISO/IEC 14496-12.
Constant Value: "android.media.mediaparser.FragmentedMp4Parser"
PARSER_NAME_MATROSKA
public static final String PARSER_NAME_MATROSKA
Parser for the Matroska container format, as defined in the spec.
Constant Value: "android.media.mediaparser.MatroskaParser"
PARSER_NAME_MP3
public static final String PARSER_NAME_MP3
Parser for the MP3 container format, as defined in ISO/IEC 11172-3.
Constant Value: "android.media.mediaparser.Mp3Parser"
PARSER_NAME_MP4
public static final String PARSER_NAME_MP4
Parser for non-fragmented files using the MP4 container format, as defined in ISO/IEC 14496-12.
Constant Value: "android.media.mediaparser.Mp4Parser"
PARSER_NAME_OGG
public static final String PARSER_NAME_OGG
Parser for the OGG container format, as defined in RFC 3533.
Constant Value: "android.media.mediaparser.OggParser"
PARSER_NAME_PS
public static final String PARSER_NAME_PS
Parser for the PS container format, as defined in ISO/IEC 11172-1.
Constant Value: "android.media.mediaparser.PsParser"
PARSER_NAME_TS
public static final String PARSER_NAME_TS
Parser for the TS container format, as defined in ISO/IEC 13818-1.
Constant Value: "android.media.mediaparser.TsParser"
PARSER_NAME_UNKNOWN
public static final String PARSER_NAME_UNKNOWN
Parser name returned by getParserName()
when no parser has been selected yet.
Constant Value: "android.media.mediaparser.UNKNOWN"
PARSER_NAME_WAV
public static final String PARSER_NAME_WAV
Parser for the WAV container format, as defined in Multimedia Programming Interface and Data Specifications.
Constant Value: "android.media.mediaparser.WavParser"
SAMPLE_FLAG_DECODE_ONLY
public static final int SAMPLE_FLAG_DECODE_ONLY
Indicates that the sample should be decoded but not rendered.
Constant Value: -2147483648 (0x80000000)
SAMPLE_FLAG_ENCRYPTED
public static final int SAMPLE_FLAG_ENCRYPTED
Indicates that the sample is (at least partially) encrypted.
Constant Value: 1073741824 (0x40000000)
SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA
public static final int SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA
Indicates that the sample has supplemental data.
Samples will not have this flag set unless the "android.media.mediaparser.includeSupplementalData"
parameter is set to true
via
setParameter(String, Object)
.
Samples with supplemental data have the following sample data format:
- If the
"android.media.mediaparser.inBandCryptoInfo"
parameter is set, all encryption information. - (4 bytes)
sample_data_size
: The size of the actual sample data, not including supplemental data or encryption information. - (
sample_data_size
bytes): The media sample data. - (remaining bytes) The supplemental data.
Constant Value: 268435456 (0x10000000)
SAMPLE_FLAG_KEY_FRAME
public static final int SAMPLE_FLAG_KEY_FRAME
Indicates that the sample holds a synchronization sample.
Constant Value: 1 (0x00000001)
SAMPLE_FLAG_LAST_SAMPLE
public static final int SAMPLE_FLAG_LAST_SAMPLE
Indicates that the sample is known to contain the last media sample of the stream.
Constant Value: 536870912 (0x20000000)
Public methods
advance
public boolean advance (MediaParser.SeekableInputReader seekableInputReader)
Makes progress in the extraction of the input media stream, unless the end of the input has been reached.
This method will block until some progress has been made.
If this instance was created using create(OutputConsumer, String)
, the first call to this method will
sniff the content using the selected parser implementations.
Parameters | |
---|---|
seekableInputReader |
MediaParser.SeekableInputReader : The SeekableInputReader from which to obtain the media
container data.
This value cannot be null . |
Returns | |
---|---|
boolean |
Whether there is any data left to extract. Returns false if the end of input has been reached. |
Throws | |
---|---|
IOException |
If an error occurs while reading from the SeekableInputReader . |
MediaParser.UnrecognizedInputFormatException |
If the format cannot be recognized by any of the underlying parser implementations. |
create
public static MediaParser create (MediaParser.OutputConsumer outputConsumer, String... parserNames)
Creates an instance whose backing parser will be selected by sniffing the content during the
first advance(SeekableInputReader)
call. Parser implementations will sniff the content in order of
appearance in parserNames
.
Parameters | |
---|---|
outputConsumer |
MediaParser.OutputConsumer : The OutputConsumer to which extracted data is output.
This value cannot be null . |
parserNames |
String : The names of the parsers to sniff the content with. If empty, a default
array of names is used.
This value cannot be null .
Value is PARSER_NAME_UNKNOWN , PARSER_NAME_MATROSKA , PARSER_NAME_FMP4 , PARSER_NAME_MP4 , PARSER_NAME_MP3 , PARSER_NAME_ADTS , PARSER_NAME_AC3 , PARSER_NAME_TS , PARSER_NAME_FLV , PARSER_NAME_OGG , PARSER_NAME_PS , PARSER_NAME_WAV , PARSER_NAME_AMR , PARSER_NAME_AC4 , or PARSER_NAME_FLAC |
Returns | |
---|---|
MediaParser |
A new instance.
This value cannot be null . |
createByName
public static MediaParser createByName (String name, MediaParser.OutputConsumer outputConsumer)
Creates an instance backed by the parser with the given name
. The returned instance
will attempt parsing without sniffing the content.
Parameters | |
---|---|
name |
String : The name of the parser that will be associated with the created instance.
This value cannot be null .
Value is PARSER_NAME_UNKNOWN , PARSER_NAME_MATROSKA , PARSER_NAME_FMP4 , PARSER_NAME_MP4 , PARSER_NAME_MP3 , PARSER_NAME_ADTS , PARSER_NAME_AC3 , PARSER_NAME_TS , PARSER_NAME_FLV , PARSER_NAME_OGG , PARSER_NAME_PS , PARSER_NAME_WAV , PARSER_NAME_AMR , PARSER_NAME_AC4 , or PARSER_NAME_FLAC |
outputConsumer |
MediaParser.OutputConsumer : The OutputConsumer to which track data and samples are pushed.
This value cannot be null . |
Returns | |
---|---|
MediaParser |
A new instance.
This value cannot be null . |
Throws | |
---|---|
IllegalArgumentException |
If an invalid name is provided. |
getLogSessionId
public LogSessionId getLogSessionId ()
Returns | |
---|---|
LogSessionId |
This value cannot be null . |
getParserName
public String getParserName ()
Returns the name of the backing parser implementation.
If this instance was creating using createByName(String, OutputConsumer)
, the provided name is returned.
If this instance was created using create(OutputConsumer, String)
, this method will return PARSER_NAME_UNKNOWN
until the first call to advance(SeekableInputReader)
, after which the name of the
backing parser implementation is returned.
Returns | |
---|---|
String |
The name of the backing parser implementation, or null if the backing parser
implementation has not yet been selected.
Value is PARSER_NAME_UNKNOWN , PARSER_NAME_MATROSKA , PARSER_NAME_FMP4 , PARSER_NAME_MP4 , PARSER_NAME_MP3 , PARSER_NAME_ADTS , PARSER_NAME_AC3 , PARSER_NAME_TS , PARSER_NAME_FLV , PARSER_NAME_OGG , PARSER_NAME_PS , PARSER_NAME_WAV , PARSER_NAME_AMR , PARSER_NAME_AC4 , or PARSER_NAME_FLAC |
getParserNames
public static List<String> getParserNames (MediaFormat mediaFormat)
Returns an immutable list with the names of the parsers that are suitable for container
formats with the given MediaFormat
.
A parser supports a MediaFormat
if the mime type associated with MediaFormat.KEY_MIME
corresponds to the supported container format.
Parameters | |
---|---|
mediaFormat |
MediaFormat : The MediaFormat to check support for.
This value cannot be null . |
Returns | |
---|---|
List<String> |
The parser names that support the given mediaFormat , or the list of all
parsers available if no container specific format information is provided.
This value cannot be null .
Value is PARSER_NAME_UNKNOWN , PARSER_NAME_MATROSKA , PARSER_NAME_FMP4 , PARSER_NAME_MP4 , PARSER_NAME_MP3 , PARSER_NAME_ADTS , PARSER_NAME_AC3 , PARSER_NAME_TS , PARSER_NAME_FLV , PARSER_NAME_OGG , PARSER_NAME_PS , PARSER_NAME_WAV , PARSER_NAME_AMR , PARSER_NAME_AC4 , or PARSER_NAME_FLAC |
release
public void release ()
Releases any acquired resources.
After calling this method, this instance becomes unusable and no other methods should be invoked.
seek
public void seek (MediaParser.SeekPoint seekPoint)
Seeks within the media container being extracted.
SeekPoints
can be obtained from the SeekMap
passed to MediaParser.OutputConsumer.onSeekMapFound(android.media.MediaParser.SeekMap)
.
Following a call to this method, the InputReader
passed to the next invocation of
advance(SeekableInputReader)
must provide data starting from SeekPoint#position
in the stream.
Parameters | |
---|---|
seekPoint |
MediaParser.SeekPoint : The SeekPoint to seek to.
This value cannot be null . |
setLogSessionId
public void setLogSessionId (LogSessionId logSessionId)
Parameters | |
---|---|
logSessionId |
LogSessionId : This value cannot be null . |
setParameter
public MediaParser setParameter (String parameterName, Object value)
Sets parser-specific parameters which allow customizing behavior.
Must be called before the first call to advance(SeekableInputReader)
.
Returns | |
---|---|
MediaParser |
This instance, for convenience.
This value cannot be null . |
Throws | |
---|---|
IllegalStateException |
If called after calling advance(SeekableInputReader) on the same instance. |
supportsParameter
public boolean supportsParameter (String parameterName)
Returns whether the given parameterName
is supported by this parser.
Parameters | |
---|---|
parameterName |
String : The parameter name to check support for. One of the PARAMETER_*
constants.
This value cannot be null .
Value is PARAMETER_ADTS_ENABLE_CBR_SEEKING , PARAMETER_AMR_ENABLE_CBR_SEEKING , PARAMETER_FLAC_DISABLE_ID3 , PARAMETER_MP4_IGNORE_EDIT_LISTS , PARAMETER_MP4_IGNORE_TFDT_BOX , PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES , PARAMETER_MATROSKA_DISABLE_CUES_SEEKING , PARAMETER_MP3_DISABLE_ID3 , PARAMETER_MP3_ENABLE_CBR_SEEKING , PARAMETER_MP3_ENABLE_INDEX_SEEKING , PARAMETER_TS_MODE , PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES , PARAMETER_TS_IGNORE_AAC_STREAM , PARAMETER_TS_IGNORE_AVC_STREAM , PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM , PARAMETER_TS_DETECT_ACCESS_UNITS , PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS , android.media.MediaParser.PARAMETER_IN_BAND_CRYPTO_INFO, or android.media.MediaParser.PARAMETER_INCLUDE_SUPPLEMENTAL_DATA |
Returns | |
---|---|
boolean |
Whether the given parameterName is supported. |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-04-11 UTC.