Files
iptvnator/libs/shared/interfaces/src/lib/embedded-mpv-session.interface.ts
T
4gray 77cf4065e0 feat(playback): add embedded mpv series navigation (#1030)
* fix(remote-control): use iptvnator favicon

* feat(playback): add embedded mpv series navigation

* refactor(playback): share series navigation state
2026-06-08 07:55:01 +02:00

74 lines
1.6 KiB
TypeScript

export type EmbeddedMpvSessionStatus =
| 'idle'
| 'loading'
| 'playing'
| 'paused'
| 'ended'
| 'error'
| 'closed';
export interface EmbeddedMpvBounds {
x: number;
y: number;
width: number;
height: number;
}
export interface EmbeddedMpvCapabilities {
subtitles: boolean;
playbackSpeed: boolean;
aspectOverride: boolean;
screenshot: boolean;
recording: boolean;
}
export interface EmbeddedMpvSupport {
supported: boolean;
platform: string;
reason?: string;
capabilities?: EmbeddedMpvCapabilities;
}
export interface EmbeddedMpvAudioTrack {
id: number;
title?: string;
language?: string;
selected: boolean;
defaultTrack?: boolean;
forced?: boolean;
}
export type EmbeddedMpvSubtitleTrack = EmbeddedMpvAudioTrack;
export interface EmbeddedMpvRecordingState {
active: boolean;
targetPath?: string;
startedAt?: string;
error?: string;
}
export interface EmbeddedMpvRecordingStartOptions {
directory?: string;
title?: string;
}
export interface EmbeddedMpvSession {
id: string;
title: string;
streamUrl: string;
status: EmbeddedMpvSessionStatus;
positionSeconds: number;
durationSeconds: number | null;
volume: number;
audioTracks: EmbeddedMpvAudioTrack[];
selectedAudioTrackId: number | null;
subtitleTracks: EmbeddedMpvSubtitleTrack[];
selectedSubtitleTrackId: number | null;
playbackSpeed: number;
aspectOverride: string;
recording?: EmbeddedMpvRecordingState;
startedAt: string;
updatedAt: string;
error?: string;
}