Class ProgressiveMediaSource
- java.lang.Object
-
- com.google.android.exoplayer2.source.BaseMediaSource
-
- com.google.android.exoplayer2.source.ProgressiveMediaSource
-
- All Implemented Interfaces:
MediaSource
public final class ProgressiveMediaSource extends BaseMediaSource
Provides one period that loads data from aUri
and extracted using anExtractor
.If the possible input stream container formats are known, pass a factory that instantiates extractors for them to the constructor. Otherwise, pass a
DefaultExtractorsFactory
to use the default extractors. When reading a new stream, the firstExtractor
in the array of extractors created by the factory that returnstrue
fromExtractor.sniff(com.google.android.exoplayer2.extractor.ExtractorInput)
will be used to extract samples from the input stream.Note that the built-in extractor for FLV streams does not support seeking.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ProgressiveMediaSource.Factory
Factory forProgressiveMediaSource
s.-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.source.MediaSource
MediaSource.MediaPeriodId, MediaSource.MediaSourceCaller
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_LOADING_CHECK_INTERVAL_BYTES
The default number of bytes that should be loaded between each each invocation ofSequenceableLoader.Callback.onContinueLoadingRequested(SequenceableLoader)
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MediaPeriod
createPeriod(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)
Returns a newMediaPeriod
identified byperiodId
.MediaItem
getMediaItem()
Returns theMediaItem
whose media is provided by the source.void
maybeThrowSourceInfoRefreshError()
Throws any pending error encountered while loading or refreshing source information.void
onSourceInfoRefreshed(long durationUs, boolean isSeekable, boolean isLive)
protected void
prepareSourceInternal(TransferListener mediaTransferListener)
Starts source preparation and enables the source, seeBaseMediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)
.void
releasePeriod(MediaPeriod mediaPeriod)
Releases the period.protected void
releaseSourceInternal()
Releases the source, seeBaseMediaSource.releaseSource(MediaSourceCaller)
.-
Methods inherited from class com.google.android.exoplayer2.source.BaseMediaSource
addDrmEventListener, addEventListener, createDrmEventDispatcher, createDrmEventDispatcher, createEventDispatcher, createEventDispatcher, createEventDispatcher, disable, disableInternal, enable, enableInternal, getPlayerId, isEnabled, prepareSource, refreshSourceInfo, releaseSource, removeDrmEventListener, removeEventListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.google.android.exoplayer2.source.MediaSource
getInitialTimeline, isSingleWindow, prepareSource
-
-
-
-
Field Detail
-
DEFAULT_LOADING_CHECK_INTERVAL_BYTES
public static final int DEFAULT_LOADING_CHECK_INTERVAL_BYTES
The default number of bytes that should be loaded between each each invocation ofSequenceableLoader.Callback.onContinueLoadingRequested(SequenceableLoader)
.- See Also:
- Constant Field Values
-
-
Method Detail
-
getMediaItem
public MediaItem getMediaItem()
Description copied from interface:MediaSource
Returns theMediaItem
whose media is provided by the source.- Specified by:
getMediaItem
in interfaceMediaSource
-
prepareSourceInternal
protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener)
Description copied from class:BaseMediaSource
Starts source preparation and enables the source, seeBaseMediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)
. This method is called at most once until the next call toBaseMediaSource.releaseSourceInternal()
.- Specified by:
prepareSourceInternal
in classBaseMediaSource
- Parameters:
mediaTransferListener
- The transfer listener which should be informed of any media data transfers. May be null if no listener is available. Note that this listener should usually be only informed of transfers related to the media loads and not of auxiliary loads for manifests and other data.
-
maybeThrowSourceInfoRefreshError
public void maybeThrowSourceInfoRefreshError()
Description copied from interface:MediaSource
Throws any pending error encountered while loading or refreshing source information.Should not be called directly from application code.
Must only be called after
MediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)
.- Specified by:
maybeThrowSourceInfoRefreshError
in interfaceMediaSource
-
createPeriod
public MediaPeriod createPeriod(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)
Description copied from interface:MediaSource
Returns a newMediaPeriod
identified byperiodId
.Should not be called directly from application code.
Must only be called if the source is enabled.
- Specified by:
createPeriod
in interfaceMediaSource
- Parameters:
id
- The identifier of the period.allocator
- AnAllocator
from which to obtain media buffer allocations.startPositionUs
- The expected start position, in microseconds.- Returns:
- A new
MediaPeriod
.
-
releasePeriod
public void releasePeriod(MediaPeriod mediaPeriod)
Description copied from interface:MediaSource
Releases the period.Should not be called directly from application code.
- Specified by:
releasePeriod
in interfaceMediaSource
- Parameters:
mediaPeriod
- The period to release.
-
releaseSourceInternal
protected void releaseSourceInternal()
Description copied from class:BaseMediaSource
Releases the source, seeBaseMediaSource.releaseSource(MediaSourceCaller)
. This method is called exactly once after each call toBaseMediaSource.prepareSourceInternal(TransferListener)
.- Specified by:
releaseSourceInternal
in classBaseMediaSource
-
onSourceInfoRefreshed
public void onSourceInfoRefreshed(long durationUs, boolean isSeekable, boolean isLive)
-
-