com.bitmovin.player.api

com.bitmovin.player.api

Types

NameSummary
BandwidthEstimationModesealed interface BandwidthEstimationMode : Parcelable
BandwidthMeterTypesealed interface BandwidthMeterType : Parcelable
Defines the bandwidth meter to be used by the player.
DebugConfigobject DebugConfig
Global debug configuration for all Bitmovin components.
DeviceDescriptionsealed class DeviceDescription : Parcelable
Describes a device.
ExperimentalBitmovinApi@Target(allowedTargets = [AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY])
annotation class ExperimentalBitmovinApi
Indicates that a public API of the annotated element (class, function or property) is not in stable state yet. It may be renamed, changed or even removed in a future version.
ForceReuseVideoCodecReasonenum ForceReuseVideoCodecReason : Enum<ForceReuseVideoCodecReason>
When switching the video quality, the video decoder's configuration might change as the player can't always know if the codec supports such configuration change, it destroys and recreates it. This behaviour can cause brief black screens when switching between video qualities as codec recreation can be slow.
HlsConfigdata class HlsConfig(val interstitialsConfig: InterstitialsConfig = InterstitialsConfig()) : Parcelable
LicensingConfigdata class LicensingConfig(var delay: Int = 0) : Parcelable
Configures the behaviour of the license evaluation.
LoadErrorFallbackConfigsealed interface LoadErrorFallbackConfig : Parcelable
Defines the conditions for falling back to a different resource when encountering a load error.
PlaybackConfigdata class PlaybackConfig(var isAutoplayEnabled: Boolean = false, var isMuted: Boolean = false, var isTimeShiftEnabled: Boolean = true, var videoCodecPriority: List<String> = listOf("av1", "hevc", "hvc", "vp9", "avc"), var audioCodecPriority: List<String> = listOf("ec-3", "mp4a.a6", "ac-3", "mp4a.a5", "mp4a.40"), val decoderConfig: DecoderConfig = DecoderConfig(), var isTunneledPlaybackEnabled: Boolean = false, var seekMode: SeekMode = SeekMode.Exact, var forcedSubtitleCallback: ForcedSubtitleCallback? = null, var audioFilter: MediaFilter = MediaFilter.Loose, var videoFilter: MediaFilter = MediaFilter.Loose, var handleAudioFocus: Boolean = false, var handleAudioBecomingNoisy: Boolean = false) : Parcelable
Configures the playback behaviour of the player.
Playerinterface Player : EventEmitter<Event> , RemoteControlApi
Loads, controls and renders audio and video content represented through Sources. A player instance can be created via the Player() function and will idle until one or more Sources are loaded. Once load is called, the player starts a playback session and initiates necessary downloads to start playback of the loaded source(s).
PlayerConfigdata class PlayerConfig(val key: String? = null, var styleConfig: StyleConfig = com.bitmovin.player.api.ui.StyleConfig(), var playbackConfig: PlaybackConfig = PlaybackConfig(), var licensingConfig: LicensingConfig = LicensingConfig(), var advertisingConfig: AdvertisingConfig = AdvertisingConfig(), var remoteControlConfig: RemoteControlConfig = RemoteControlConfig(), var adaptationConfig: AdaptationConfig = AdaptationConfig(), var networkConfig: NetworkConfig = NetworkConfig(), var liveConfig: LiveConfig = LiveConfig(), var tweaksConfig: TweaksConfig = TweaksConfig(), var bufferConfig: BufferConfig = BufferConfig(), val hlsConfig: HlsConfig = HlsConfig()) : Parcelable
Configures a new Player instance. Must not be modified after it was used to create a Player instance.
SeekModeenum SeekMode : Parcelable, Enum<SeekMode>
Represents the mode the player uses to seek.
TimeRangedata class TimeRange(val start: Double, val end: Double)
A time range in seconds.
TweaksConfigdata class TweaksConfig(var timeChangedInterval: Double = DEFAULT_TIME_CHANGED_EVENT_INTERVAL, var languagePropertyNormalization: Boolean = true, var localDynamicDashWindowUpdateInterval: Double? = null, var useFiletypeExtractorFallbackForHls: Boolean = false, var useDrmSessionForClearPeriods: Boolean = false, var useDrmSessionForClearSources: Boolean = false, var devicesThatRequireSurfaceWorkaround: List<DeviceDescription> = emptyList(), var discardAdsWhileCasting: Boolean = false, var allowChunklessPreparationForHls: Boolean = false, var allowChunklessPreparationForHlsStreamingAds: Boolean = true, var minForwardBufferLevelForQualityIncrease: Double? = null, var maxForwardBufferLevelForQualityDecrease: Double? = null, var enableMainContentDecodingDuringAds: Boolean? = null, var assumeEmsgMetadataForHlsChunklessPreparations: Boolean = false, var forceReuseVideoCodecReasons: Set<ForceReuseVideoCodecReason> = emptySet(), var releasePlayerTimeout: Double? = null, var detachSurfaceTimeout: Double? = null, var disableAudioTracksWhileInBackground: Boolean = false, var disableVideoTracksWhileInBackground: Boolean = false, var loadErrorFallbackConfig: LoadErrorFallbackConfig? = null, var reuseAdsLoaderAcrossImaAds: Boolean = false, var bandwidthMeterType: BandwidthMeterType = BandwidthMeterType.Default(), val attemptVideoFreezeRecovery: Boolean = false, val parseSubtitlesDuringExtraction: Boolean = true, val httpResponseTypesToPreprocess: List<HttpRequestType> = listOf( HttpRequestType.ManifestDash, HttpRequestType.ManifestHlsMaster, HttpRequestType.ManifestHlsVariant, HttpRequestType.ManifestSmooth, // [MediaProgressive] is excluded by default as it prevents the player from starting // until the resource is fully downloaded and leads to OOM if the resource is too big. HttpRequestType.MediaAudio, HttpRequestType.MediaVideo, HttpRequestType.MediaSubtitles, HttpRequestType.MediaThumbnails, HttpRequestType.DrmLicenseWidevine, HttpRequestType.DrmLicenseNagraConnect, HttpRequestType.DrmLicensePlayReady, HttpRequestType.KeyHlsAes, HttpRequestType.HlsInterstitialsAssetList, HttpRequestType.Unknown, ), val enableDrmLicenseRenewRetry: Boolean = false, val constantBitrateSeekingEnabled: Boolean = false, val retryPlaybackConfig: RetryPlaybackConfig = RetryPlaybackConfig( retryPlaybackCallback = {it.suggestedAction} ), val enableHlsInterstitials: Boolean = true) : Parcelable
This configuration is used as an incubator for experimental features. Tweaks are not officially supported and are not guaranteed to be stable, i.e. their naming, functionality and API can change at any time within the tweaks or when being promoted to an official feature and moved into its final configuration namespace.