Added in API level 30

SeekMap


class SeekMap
kotlin.Any
   ↳ 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
static Int

Returned by getDurationMicros() when the duration is unknown.

Public methods
Long

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

Pair<MediaParser.SeekPoint!, MediaParser.SeekPoint!>
getSeekPoints(timeMicros: Long)

Obtains seek points for the specified seek time in microseconds.

Pair<MediaParser.SeekPoint!, MediaParser.SeekPoint!>
getSeekPoints(timeMicros: Long, trackIndex: Int)

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

Boolean

Returns whether seeking is supported.

Boolean
trackHasSeekPoints(trackIndex: Int)

Returns whether the given track has its own seek points.

Constants

UNKNOWN_DURATION

Added in API level 30
static val UNKNOWN_DURATION: Int

Returned by getDurationMicros() when the duration is unknown.

Value: -2147483648

Public methods

getDurationMicros

Added in API level 30
fun getDurationMicros(): Long

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

getSeekPoints

Added in API level 30
fun getSeekPoints(timeMicros: Long): Pair<MediaParser.SeekPoint!, MediaParser.SeekPoint!>

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.
Return
Pair<MediaParser.SeekPoint!, MediaParser.SeekPoint!> The corresponding seek points.
This value cannot be null.

getSeekPoints

fun getSeekPoints(
    timeMicros: Long,
    trackIndex: Int
): Pair<MediaParser.SeekPoint!, MediaParser.SeekPoint!>

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.
Return
Pair<MediaParser.SeekPoint!, MediaParser.SeekPoint!> The corresponding seek points.
This value cannot be null.

isSeekable

Added in API level 30
fun isSeekable(): Boolean

Returns whether seeking is supported.

trackHasSeekPoints

fun trackHasSeekPoints(trackIndex: Int): Boolean

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.
Return
Boolean Whether seeking is supported for the track.