bitmovin-player-react-native
Version:
Official React Native bindings for Bitmovin's mobile Player SDKs.
692 lines • 17.5 kB
TypeScript
import { Ad, AdBreak, AdConfig, AdItem, AdQuartile, AdSourceType } from './advertising';
import { SubtitleTrack } from './subtitleTrack';
import { VideoQuality } from './media';
import { AudioTrack } from './audioTrack';
import { LoadingState } from './source';
import { HttpRequestType } from './network/networkConfig';
/**
* Base event type for all events.
*/
export interface Event {
/**
* This event name as it is on the native side.
*/
name: string;
/**
* The UNIX timestamp in which this event happened.
*/
timestamp: number;
}
/**
* Base event type for error and warning events.
*/
export interface ErrorEvent extends Event {
/**
* Error/Warning's code number.
*/
code?: number;
/**
* Error/Warning's localized message.
*/
message: string;
/**
* Underlying data emitted with the error or warning.
*/
data?: Record<string, any>;
}
/**
* Emitted when a source is loaded into the player.
* Seeking and time shifting are allowed as soon as this event is seen.
*/
export type PlayerActiveEvent = Event;
/**
* Emitted when a source is unloaded from the player.
* Seeking and time shifting are not allowed anymore after this event.
*/
export type PlayerInactiveEvent = Event;
/**
* Emitted when a player error occurred.
*/
export type PlayerErrorEvent = ErrorEvent;
/**
* Emitted when a player warning occurred.
*/
export type PlayerWarningEvent = ErrorEvent;
/**
* Emitted when the player is destroyed.
*/
export type DestroyEvent = Event;
/**
* Emitted when the player is muted.
*/
export type MutedEvent = Event;
/**
* Emitted when the player is unmuted.
*/
export type UnmutedEvent = Event;
/**
* Emitted when the player is ready for immediate playback, because initial audio/video
* has been downloaded.
*/
export type ReadyEvent = Event;
/**
* Emitted when the player is paused.
*/
export interface PausedEvent extends Event {
/**
* The player's playback time from when this event happened.
*/
time: number;
}
/**
* Emitted when the player received an intention to start/resume playback.
*/
export interface PlayEvent extends Event {
/**
* The player's playback time from when this event happened.
*/
time: number;
}
/**
* Emitted when playback has started.
*/
export interface PlayingEvent extends Event {
/**
* The player's playback time from when this event happened.
*/
time: number;
}
/**
* Emitted when the playback of the current media has finished.
*/
export type PlaybackFinishedEvent = Event;
/**
* Source object representation the way it appears on event's payloads such as `SeekEvent`, for example.
*
* This interface only type hints what should be the shape of a {@link Source} object inside an event's
* payload during runtime so it has no direct relation with the `Source` class present in `src/source.ts`.
*
* Do not mistake it for a `NativeInstance` type.
*/
export interface EventSource {
/**
* Event's source duration in seconds.
*/
duration: number;
/**
* Whether this event's source is currently active in a player.
*/
isActive: boolean;
/**
* Whether this event's source is currently attached to a player instance.
*/
isAttachedToPlayer: boolean;
/**
* Metadata for this event's source.
*/
metadata?: Record<string, any>;
/**
* The current {@link LoadingState} of the source.
*/
loadingState: LoadingState;
}
/**
* Represents a seeking position.
*/
export interface SeekPosition {
/**
* The relevant {@link Source}.
*/
source: EventSource;
/**
* The position within the {@link Source} in seconds.
*/
time: number;
}
/**
* Emitted when the player is about to seek to a new position.
* This event only applies to VoD streams.
* When looking for an equivalent for live streams, the {@link TimeShiftEvent} is relevant.
*/
export interface SeekEvent extends Event {
/**
* Origin source metadata.
*/
from: SeekPosition;
/**
* Target source metadata.
*/
to: SeekPosition;
}
/**
* Emitted when seeking has finished and data to continue playback is available.
* This event only applies to VoD streams.
* When looking for an equivalent for live streams, the {@link TimeShiftedEvent} is relevant.
*/
export type SeekedEvent = Event;
/**
* Emitted when the player starts time shifting.
* This event only applies to live streams.
* When looking for an equivalent for VoD streams, the {@link SeekEvent} is relevant.
*/
export interface TimeShiftEvent extends Event {
/**
* The position from which we start the time shift
*/
position: number;
/**
* The position to which we want to jump for the time shift
*/
targetPosition: number;
}
/**
* Emitted when time shifting has finished and data is available to continue playback.
* This event only applies to live streams.
* When looking for an equivalent for VoD streams, the {@link SeekedEvent} is relevant.
*/
export type TimeShiftedEvent = Event;
/**
* Emitted when the player begins to stall and to buffer due to an empty buffer.
*/
export type StallStartedEvent = Event;
/**
* Emitted when the player ends stalling, due to enough data in the buffer.
*/
export type StallEndedEvent = Event;
/**
* Emitted when the current playback time has changed.
*/
export interface TimeChangedEvent extends Event {
/**
* The player's playback time from when this event happened.
*/
currentTime: number;
}
/**
* Emitted when a new source loading has started.
*/
export interface SourceLoadEvent extends Event {
/**
* Source that is about to load.
*/
source: EventSource;
}
/**
* Emitted when a new source is loaded.
* This does not mean that the source is immediately ready for playback.
* {@link ReadyEvent} indicates the player is ready for immediate playback.
*/
export interface SourceLoadedEvent extends Event {
/**
* Source that was loaded into player.
*/
source: EventSource;
}
/**
* Emitted when the current source has been unloaded.
*/
export interface SourceUnloadedEvent extends Event {
/**
* Source that was unloaded from player.
*/
source: EventSource;
}
/**
* Emitted when a source error occurred.
*/
export type SourceErrorEvent = ErrorEvent;
/**
* Emitted when a source warning occurred.
*/
export type SourceWarningEvent = ErrorEvent;
/**
* Emitted when a new audio track is added to the player.
*/
export interface AudioAddedEvent extends Event {
/**
* Audio track that has been added.
*/
audioTrack: AudioTrack;
}
/**
* Emitted when the player's selected audio track has changed.
*/
export interface AudioChangedEvent extends Event {
/**
* Audio track that was previously selected.
*/
oldAudioTrack: AudioTrack;
/**
* Audio track that is selected now.
*/
newAudioTrack: AudioTrack;
}
/**
* Emitted when an audio track is removed from the player.
*/
export interface AudioRemovedEvent extends Event {
/**
* Audio track that has been removed.
*/
audioTrack: AudioTrack;
}
/**
* Emitted when a new subtitle track is added to the player.
*/
export interface SubtitleAddedEvent extends Event {
/**
* Subtitle track that has been added.
*/
subtitleTrack: SubtitleTrack;
}
/**
* Emitted when a subtitle track is removed from the player.
*/
export interface SubtitleRemovedEvent extends Event {
/**
* Subtitle track that has been removed.
*/
subtitleTrack: SubtitleTrack;
}
/**
* Emitted when the player's selected subtitle track has changed.
*/
export interface SubtitleChangedEvent extends Event {
/**
* Subtitle track that was previously selected.
*/
oldSubtitleTrack: SubtitleTrack;
/**
* Subtitle track that is selected now.
*/
newSubtitleTrack: SubtitleTrack;
}
/**
* Emitted when the player enters Picture in Picture mode.
*
* @remarks Platform: iOS, Android
*/
export type PictureInPictureEnterEvent = Event;
/**
* Emitted when the player exits Picture in Picture mode.
*
* @remarks Platform: iOS, Android
*/
export type PictureInPictureExitEvent = Event;
/**
* Emitted when the player has finished entering Picture in Picture mode on iOS.
*
* @remarks Platform: iOS
*/
export type PictureInPictureEnteredEvent = Event;
/**
* Emitted when the player has finished exiting Picture in Picture mode on iOS.
*
* @remarks Platform: iOS
*/
export type PictureInPictureExitedEvent = Event;
/**
* Emitted when the fullscreen functionality has been enabled.
*
* @remarks Platform: iOS, Android
*/
export type FullscreenEnabledEvent = Event;
/**
* Emitted when the fullscreen functionality has been disabled.
*
* @remarks Platform: iOS, Android
*/
export type FullscreenDisabledEvent = Event;
/**
* Emitted when the player enters fullscreen mode.
*
* @remarks Platform: iOS, Android
*/
export type FullscreenEnterEvent = Event;
/**
* Emitted when the player exits fullscreen mode.
*
* @remarks Platform: iOS, Android
*/
export type FullscreenExitEvent = Event;
/**
* Emitted when the availability of the Picture in Picture mode changed on Android.
*
* @remarks Platform: Android
*/
export interface PictureInPictureAvailabilityChangedEvent extends Event {
/**
* Whether Picture in Picture is available.
*/
isPictureInPictureAvailable: boolean;
}
/**
* Emitted when an ad break has started.
*/
export interface AdBreakStartedEvent extends Event {
/**
* The {@link AdBreak} that has started.
*/
adBreak?: AdBreak;
}
/**
* Emitted when an ad break has finished.
*/
export interface AdBreakFinishedEvent extends Event {
/**
* The {@link AdBreak} that has finished.
*/
adBreak?: AdBreak;
}
/**
* Emitted when the playback of an ad has started.
*/
export interface AdStartedEvent extends Event {
/**
* The {@link Ad} this event is related to.
*/
ad?: Ad;
/**
* The target URL to open once the user clicks on the ad.
*/
clickThroughUrl?: string;
/**
* The {@link AdSourceType} of the started ad.
*/
clientType?: AdSourceType;
/**
* The duration of the ad in seconds.
*/
duration: number;
/**
* The index of the ad in the queue.
*/
indexInQueue: number;
/**
* The position of the corresponding ad.
*/
position?: string;
/**
* The skip offset of the ad in seconds.
*/
skipOffset: number;
/**
* The main content time at which the ad is played.
*/
timeOffset: number;
}
/**
* Emitted when an ad has finished playback.
*/
export interface AdFinishedEvent extends Event {
/**
* The {@link Ad} that finished playback.
*/
ad?: Ad;
}
/**
* Emitted when an error with the ad playback occurs.
*/
export interface AdErrorEvent extends ErrorEvent {
/**
* The {@link AdConfig} for which the ad error occurred.
*/
adConfig?: AdConfig;
/**
* The {@link AdItem} for which the ad error occurred.
*/
adItem?: AdItem;
}
/**
* Emitted when an ad was clicked.
*/
export interface AdClickedEvent extends Event {
/**
* The click through url of the ad.
*/
clickThroughUrl?: string;
}
/**
* Emitted when an ad was skipped.
*/
export interface AdSkippedEvent extends Event {
/**
* The ad that was skipped.
*/
ad?: Ad;
}
/**
* Emitted when the playback of an ad has progressed over a quartile boundary.
*/
export interface AdQuartileEvent extends Event {
/**
* The {@link AdQuartile} boundary that playback has progressed over.
*/
quartile: AdQuartile;
}
/**
* Emitted when an ad manifest was successfully downloaded, parsed and added into the ad break schedule.
*/
export interface AdScheduledEvent extends Event {
/**
* The total number of scheduled ads.
*/
numberOfAds: number;
}
/**
* Emitted when the download of an ad manifest is started.
*/
export interface AdManifestLoadEvent extends Event {
/**
* The {@link AdBreak} this event is related to.
*/
adBreak?: AdBreak;
/**
* The {@link AdConfig} of the loaded ad manifest.
*/
adConfig?: AdConfig;
}
/**
* Emitted when an ad manifest was successfully loaded.
*/
export interface AdManifestLoadedEvent extends Event {
/**
* The {@link AdBreak} this event is related to.
*/
adBreak?: AdBreak;
/**
* The {@link AdConfig} of the loaded ad manifest.
*/
adConfig?: AdConfig;
/**
* How long it took for the ad tag to be downloaded in milliseconds.
*/
downloadTime: number;
}
/**
* Emitted when current video download quality has changed.
*/
export interface VideoDownloadQualityChangedEvent extends Event {
/**
* The new quality
*/
newVideoQuality: VideoQuality;
/**
* The previous quality
*/
oldVideoQuality: VideoQuality;
}
/**
* Emitted when the current video playback quality has changed.
*/
export interface VideoPlaybackQualityChangedEvent extends Event {
/**
* The new quality
*/
newVideoQuality: VideoQuality;
/**
* The previous quality
*/
oldVideoQuality: VideoQuality;
}
/**
* Emitted when casting to a cast-compatible device is available.
*/
export type CastAvailableEvent = Event;
/**
* Emitted when the playback on a cast-compatible device was paused.
*
* On Android {@link PausedEvent} is also emitted while casting.
*/
export type CastPausedEvent = Event;
/**
* Emitted when the playback on a cast-compatible device has finished.
*
* On Android {@link PlaybackFinishedEvent} is also emitted while casting.
*/
export type CastPlaybackFinishedEvent = Event;
/**
* Emitted when playback on a cast-compatible device has started.
*
* On Android {@link PlayingEvent} is also emitted while casting.
*/
export type CastPlayingEvent = Event;
/**
* Emitted when the cast app is launched successfully.
*/
export interface CastStartedEvent extends Event {
/**
* The name of the cast device on which the app was launched.
*/
deviceName: string | null;
}
/**
* Emitted when casting is initiated, but the user still needs to choose which device should be used.
*/
export type CastStartEvent = Event;
/**
* Emitted when casting to a cast-compatible device is stopped.
*/
export type CastStoppedEvent = Event;
/**
* Emitted when the time update from the currently used cast-compatible device is received.
*/
export type CastTimeUpdatedEvent = Event;
/**
* Contains information for the {@link CastWaitingForDeviceEvent}.
*/
export interface CastPayload {
/**
* The current time in seconds.
*/
currentTime: number;
/**
* The name of the chosen cast device.
*/
deviceName: string | null;
/**
* The type of the payload (always `"cast"`).
*/
type: string;
}
/**
* Emitted when a cast-compatible device has been chosen and the player is waiting for the device to get ready for
* playback.
*/
export interface CastWaitingForDeviceEvent extends Event {
/**
* The {@link CastPayload} object for the event
*/
castPayload: CastPayload;
}
/**
* Emitted when a download was finished.
*/
export interface DownloadFinishedEvent extends Event {
/**
* The time needed to finish the request, in seconds.
*/
downloadTime: number;
/**
* Which type of request this was.
*/
requestType: HttpRequestType;
/**
* The HTTP status code of the request.
* If opening the connection failed, a value of `0` is returned.
*/
httpStatus: number;
/**
* If the download was successful.
*/
isSuccess: boolean;
/**
* The last redirect location, or `null` if no redirect happened.
*/
lastRedirectLocation?: string;
/**
* The size of the downloaded data, in bytes.
*/
size: number;
/**
* The URL of the request.
*/
url: string;
}
/**
* Emitted when the player transitions from one playback speed to another.
* @remarks Platform: iOS, tvOS
*/
export interface PlaybackSpeedChangedEvent extends Event {
/**
* The playback speed before the change happened.
*/
from: number;
/**
* The playback speed after the change happened.
*/
to: number;
}
/**
* Emitted when a subtitle entry transitions into the active status.
*/
export interface CueEnterEvent extends Event {
/**
* The playback time in seconds when the subtitle should be rendered.
*/
start: number;
/**
* The playback time in seconds when the subtitle should be hidden.
*/
end: number;
/**
* The textual content of this subtitle.
*/
text?: string;
/**
* Data URI for image data of this subtitle.
*/
image?: string;
}
/**
* Emitted when an active subtitle entry transitions into the inactive status.
*/
export interface CueExitEvent extends Event {
/**
* The playback time in seconds when the subtitle should be rendered.
*/
start: number;
/**
* The playback time in seconds when the subtitle should be hidden.
*/
end: number;
/**
* The textual content of this subtitle.
*/
text?: string;
/**
* Data URI for image data of this subtitle.
*/
image?: string;
}
//# sourceMappingURL=events.d.ts.map