bitmovin-player-ui
Version:
Bitmovin Player UI Framework
85 lines (83 loc) • 2.95 kB
TypeScript
import { PlayerAPI } from 'bitmovin-player';
/**
* The Group Playback API offers control over synchronized playback of a group of clients, e.g. for Apple SharePlay
* sessions.
* Note: The API currently only covers the immediate needs of the iOS SDK in combination with our UI which is regarding
* temporarily suspending synchronization of the player from the group. But it is open to be extended as needed in the
* future.
*/
/**
* Reason for suspending the synchronization with the group.
*/
export declare enum GroupPlaybackSuspensionReason {
UserIsScrubbing = "userIsScrubbing"
}
/**
* A representation of a temporary break in participation.
*/
export interface GroupPlaybackSuspension {
/**
* The reason for the suspension.
*/
reason: GroupPlaybackSuspensionReason;
/**
* A unique identifier.
*/
id: string;
}
/**
* Options to be considered upon ending a suspension.
*/
interface EndGroupPlaybackSuspensionOptions {
/**
* A proposed time for the group to seek to.
*/
proposedPlaybackTime?: number;
}
/**
* Group Playback API offering control over the player's participation in synchronized playback of a group of clients.
* For example, an Apple SharePlay session.
*/
interface GroupPlaybackAPI {
/**
* Begins a new suspension.
*
* Temporarily suspends the local player's synchronization with the group. While suspended, any local playback control
* action (e.g. play, pause, seek) will not be forwarded to the group and any action originating from another group
* participant will not be performed on the local player.
*
* @remarks
* It is possible for multiple suspensions to exist exist simultaneously with different suspension reasons. The player
* will re-synchronize with the group once all existing suspensions have ended.
*
* @param reason - The reason for the suspension.
* @returns A suspension object.
*/
beginSuspension(reason: GroupPlaybackSuspensionReason): GroupPlaybackSuspension;
/**
* Ends the given suspension.
*
* @param suspension - The suspension to be ended.
* @param options - Optional. Options to be considered when ending the suspension, e.g. a proposed seek time for the group.
*/
endSuspension(suspension: GroupPlaybackSuspension, options?: EndGroupPlaybackSuspensionOptions): void;
/**
* Whether the player is currently participating in a group playback session.
*/
hasJoined(): boolean;
/**
* Whether the player is currently suspending synchronization with the group.
* Can only return true if `hasJoined()` also is true.
*/
isSuspended(): boolean;
}
export interface ExtendedPlayerAPI extends PlayerAPI {
/**
* Group Playback API
*
* @remarks
* This API is optional as not every platform supports group playback.
*/
groupPlayback?: GroupPlaybackAPI;
}
export {};