IMediaPlayerService.ts
1 import { Signal } from '@preact/signals-react'; 2 import { IVideoFile } from 'ipmc-interfaces'; 3 4 export const IMediaPlayerServiceSymbol = Symbol.for('MediaPlayerSymbol'); 5 6 /** 7 * Service to controll media playback. 8 */ 9 export interface IMediaPlayerService { 10 /** 11 * Initializes a video player. 12 * @param el Video element to use. 13 * @param file File to play. 14 */ 15 initializeVideo(el: HTMLVideoElement, file: IVideoFile): () => void; 16 17 /** 18 * Toggles play state. 19 */ 20 togglePlay(): void; 21 22 /** 23 * Select a subtitle track. 24 * @param trackName Subtitle track to use (undefined if none). 25 */ 26 selectSubtitle(trackName?: string): void; 27 28 /** 29 * Available languages, only available for videos. 30 */ 31 languages: Signal<any[]>; 32 33 /** 34 * Available subtitles, only available for videos. 35 */ 36 subtitles: Signal<any[]>; 37 38 /** 39 * Whether or not media is currently playing. 40 */ 41 playing: Signal<boolean>; 42 }