UNPKG

bitmovin-player-ui

Version:
85 lines (83 loc) 2.95 kB
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 {};