Class HlsMediaSource
- java.lang.Object
-
- com.google.android.exoplayer2.source.BaseMediaSource
-
- com.google.android.exoplayer2.source.hls.HlsMediaSource
-
- All Implemented Interfaces:
HlsPlaylistTracker.PrimaryPlaylistListener,MediaSource
public final class HlsMediaSource extends BaseMediaSource implements HlsPlaylistTracker.PrimaryPlaylistListener
An HLSMediaSource.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classHlsMediaSource.FactoryFactory forHlsMediaSources.static interfaceHlsMediaSource.MetadataTypeThe types of metadata that can be extracted from HLS streams.-
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 intMETADATA_TYPE_EMSGType for ESMG metadata in HLS streams.static intMETADATA_TYPE_ID3Type for ID3 metadata in HLS streams.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MediaPeriodcreatePeriod(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)Returns a newMediaPeriodidentified byperiodId.MediaItemgetMediaItem()Returns theMediaItemwhose media is provided by the source.voidmaybeThrowSourceInfoRefreshError()Throws any pending error encountered while loading or refreshing source information.voidonPrimaryPlaylistRefreshed(HlsMediaPlaylist mediaPlaylist)Called when the primary playlist changes.protected voidprepareSourceInternal(TransferListener mediaTransferListener)Starts source preparation and enables the source, seeBaseMediaSource.prepareSource(MediaSourceCaller, TransferListener).voidreleasePeriod(MediaPeriod mediaPeriod)Releases the period.protected voidreleaseSourceInternal()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, 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
-
-
-
-
Field Detail
-
METADATA_TYPE_ID3
public static final int METADATA_TYPE_ID3
Type for ID3 metadata in HLS streams.- See Also:
- Constant Field Values
-
METADATA_TYPE_EMSG
public static final int METADATA_TYPE_EMSG
Type for ESMG metadata in HLS streams.- See Also:
- Constant Field Values
-
-
Method Detail
-
getMediaItem
public MediaItem getMediaItem()
Description copied from interface:MediaSourceReturns theMediaItemwhose media is provided by the source.- Specified by:
getMediaItemin interfaceMediaSource
-
prepareSourceInternal
protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener)Description copied from class:BaseMediaSourceStarts source preparation and enables the source, seeBaseMediaSource.prepareSource(MediaSourceCaller, TransferListener). This method is called at most once until the next call toBaseMediaSource.releaseSourceInternal().- Specified by:
prepareSourceInternalin 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() throws IOExceptionDescription copied from interface:MediaSourceThrows 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).- Specified by:
maybeThrowSourceInfoRefreshErrorin interfaceMediaSource- Throws:
IOException
-
createPeriod
public MediaPeriod createPeriod(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)
Description copied from interface:MediaSourceReturns a newMediaPeriodidentified byperiodId.Should not be called directly from application code.
Must only be called if the source is enabled.
- Specified by:
createPeriodin interfaceMediaSource- Parameters:
id- The identifier of the period.allocator- AnAllocatorfrom 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:MediaSourceReleases the period.Should not be called directly from application code.
- Specified by:
releasePeriodin interfaceMediaSource- Parameters:
mediaPeriod- The period to release.
-
releaseSourceInternal
protected void releaseSourceInternal()
Description copied from class:BaseMediaSourceReleases the source, seeBaseMediaSource.releaseSource(MediaSourceCaller). This method is called exactly once after each call toBaseMediaSource.prepareSourceInternal(TransferListener).- Specified by:
releaseSourceInternalin classBaseMediaSource
-
onPrimaryPlaylistRefreshed
public void onPrimaryPlaylistRefreshed(HlsMediaPlaylist mediaPlaylist)
Description copied from interface:HlsPlaylistTracker.PrimaryPlaylistListenerCalled when the primary playlist changes.- Specified by:
onPrimaryPlaylistRefreshedin interfaceHlsPlaylistTracker.PrimaryPlaylistListener- Parameters:
mediaPlaylist- The primary playlist new snapshot.
-
-