MediaParser.SeekMap


public static final class MediaParser.SeekMap
extends Object

java.lang.Object
   ↳ android.media.MediaParser.SeekMap


Maps seek positions to SeekPoints in the stream.

A SeekPoint is a position in the stream from which a player may successfully start playing media samples.

Summary

Constants

int UNKNOWN_DURATION

Returned by getDurationMicros() when the duration is unknown.

Public methods

long getDurationMicros()

Returns the duration of the stream in microseconds or UNKNOWN_DURATION if the duration is unknown.

Pair<MediaParser.SeekPointMediaParser.SeekPoint> getSeekPoints(long timeMicros)

Obtains seek points for the specified seek time in microseconds.

Pair<MediaParser.SeekPointMediaParser.SeekPoint> getSeekPoints(long timeMicros, int trackIndex)

Obtains seek points for the specified seek time in microseconds, using cue points from a specific track.

boolean isSeekable()

Returns whether seeking is supported.

boolean trackHasSeekPoints(int trackIndex)

Returns whether the given track has its own seek points.

Inherited methods

Constants

UNKNOWN_DURATION

Added in API level 30
public static final int UNKNOWN_DURATION

Returned by getDurationMicros() when the duration is unknown.

Constant Value: -2147483648 (0x80000000)

Public methods

getDurationMicros

Added in API level 30
public long getDurationMicros ()

Returns the duration of the stream in microseconds or UNKNOWN_DURATION if the duration is unknown.

Returns
long

getSeekPoints

Added in API level 30
public Pair<MediaParser.SeekPointMediaParser.SeekPoint> getSeekPoints (long timeMicros)

Obtains seek points for the specified seek time in microseconds.

getSeekPoints(timeMicros).first contains the latest seek point for samples with timestamp equal to or smaller than timeMicros.

getSeekPoints(timeMicros).second contains the earliest seek point for samples with timestamp equal to or greater than timeMicros. If a seek point exists for timeMicros, the returned pair will contain the same SeekPoint twice.

Parameters
timeMicros long: A seek time in microseconds.

Returns
Pair<MediaParser.SeekPointMediaParser.SeekPoint> The corresponding seek points.
This value cannot be null.

getSeekPoints

Added in API level 10000
public Pair<MediaParser.SeekPointMediaParser.SeekPoint> getSeekPoints (long timeMicros, 
                int trackIndex)

Obtains seek points for the specified seek time in microseconds, using cue points from a specific track.

This method is similar to getSeekPoints(long), but allows specifying a trackIndex. The trackIndex is the same index passed to OutputConsumer.onTrackDataFound(int,TrackData).

Use trackHasSeekPoints(int) to check if a track has its own seek points. If it returns false for the given trackIndex, this method will fall back to using the container's seek points, which is equivalent to calling getSeekPoints(long).

Parameters
timeMicros long: A seek time in microseconds.

trackIndex int: The index of the track to use for finding seek points.

Returns
Pair<MediaParser.SeekPointMediaParser.SeekPoint> The corresponding seek points.
This value cannot be null.

isSeekable

Added in API level 30
public boolean isSeekable ()

Returns whether seeking is supported.

Returns
boolean

trackHasSeekPoints

Added in API level 10000
public boolean trackHasSeekPoints (int trackIndex)

Returns whether the given track has its own seek points.

The trackIndex is the same index passed to OutputConsumer.onTrackDataFound(int,TrackData).

This method can return false for all tracks even when isSeekable() returns true. In such cases, seeking is supported for the container, but not on a per-track basis. When this method returns false for a given track, calling getSeekPoints(long, int) for that track will fall back to using the container's seek points.

Parameters
trackIndex int: The index of the track.

Returns
boolean Whether seeking is supported for the track.