Files
radio-with-a-view/src/interfaces/IVideoPlayer.ts
Alexander Zinn 1fd455d29b Add initial project structure with Docker setup, SOLID principles, and video player implementation
- Created .gitignore to exclude logs and build artifacts.
- Added Dockerfile and docker-compose.yml for containerized deployment.
- Implemented a video player following SOLID principles with classes for video source, audio control, and volume meter.
- Introduced interfaces for audio, video source, and volume meter to ensure adherence to Interface Segregation Principle.
- Developed main entry point and HTML structure for the video player application.
- Included TypeScript configuration and package.json for project dependencies.
2025-12-17 22:33:35 -05:00

43 lines
952 B
TypeScript

import type { IVideoSource } from './IVideoSource';
import type { IVideoSeekController } from './IVideoSeekController';
import type { IAudioController } from './IAudioController';
import type { IVolumeMeter } from './IVolumeMeter';
/**
* Main interface for video player
* Follows Dependency Inversion Principle (DIP) - depends on abstractions
*/
export interface IVideoPlayer {
/**
* Initializes the video player with a stream URL
* @param url - The URL of the video stream
*/
initialize(url: string): void;
/**
* Gets the video source controller
*/
getVideoSource(): IVideoSource;
/**
* Gets the seek controller
*/
getSeekController(): IVideoSeekController;
/**
* Gets the audio controller
*/
getAudioController(): IAudioController;
/**
* Gets the volume meter
*/
getVolumeMeter(): IVolumeMeter;
/**
* Gets the underlying video element
*/
getVideoElement(): HTMLVideoElement;
}