## Core Features - **Media Playback:** Support on-demand playback for media files in various formats. - **Caching & Performance:** - Use cached segments for seamless seeking and fast resume. - If another user starts playback with the same parameters, reuse existing cached data to minimize transcoding and bandwidth usage. - Includes CDN capabilities and P2P federation by Blint. - **Metadata Management:** - Automatically identify and fetch metadata from databases like IMDb, TVDB, etc. - Allow users to edit and correct metadata manually. - **Transcoding Options:** - Pre-encode media into multiple formats for reduced compute load (at the expense of storage). - Or use dynamic, on-the-fly transcoding for flexibility and storage efficiency. - **Clients** - Web Client - Native Clients: Desktop (Windows, Linux, MacOS), Mobile (Android, iOS), TV (Android TV, Apple TV, WebOS, Roku, Someone could create one for Xbox) - Multiuser Support in clients: You are able to login with multiple users and change between them. - **Offline Access:** - Clients can batch-download content for offline playback, respecting user permissions and device limits. - **Scalability:** - Support distributed and remote ffmpeg-based transcoding pipelines for high availability and load balancing. - **User Management:** - Authentication, profiles, access control, and session tracking. - **Library & Personalization:** - Organize and manage libraries by media type (movies, shows, etc.). - Create and manage playlists and collections. - Track user history, progress, and play counts. - Allow users to group media into watchlists, favorites, or custom categories. - Provide statistics and usage insights (e.g., most watched, time spent, active users). - Show statics for users about themselves - Resume from last position across devices. ## Nice to Have / Later - **Sync Play:** Watch movies or shows together in real time across multiple clients. - **Integration with ARR Stack:** Compatibility with Radarr, Sonarr, Lidarr, and similar automation tools. - **Parental controls** - **Jellyfin-Compatible API** and **Plex-Compatible API** - **Plugin Support:** Extend functionality with custom or third-party plugins. - **Smart Playback Features:** - Intro, outro, recap skipper. - **Recommendations:** Personalized movie and series suggestions based on user history and preferences. - **External Sync:** Sync watch history, ratings, and metadata with services like Trakt.tv. - **Subtitle Management:** Automatic subtitle fetching, editing, and syncing with playback. - Probably bazarr is enough for that. - **Multi-Format Detection:** Detect multiple versions (e.g., 1080p, 4K, HDR) of the same media and show them in a unified view. - **IPTV / Live TV:** Stream and manage live channels alongside on-demand content. ## Architecture - **Frontend/Backend Separation:** Clearly separated user interface and backend services. - **Microservice-Ready:** Modular, loosely coupled components that can scale independently. - **Extensible Protocol Support:** Easily add or replace streaming and media delivery protocols. - **Telemetry & Observability:** Built-in tracing, logging, and metrics collection. - **Plugin System:** Enable community and custom extensions. - **Robust API Design:** Clean, well-documented REST and gRPC interfaces for interoperability. ## Patrik’s Dreams (Not Necessarily Realistic Goals) - On-demand streaming over QUIC. *(WebRTC was suggested but may not fit our use case.)* - **Segmented Formats:** Support CMAF alongside traditional MPEG-TS for more efficient adaptive streaming. - **Streaming Standards:** Full compatibility with both HLS and MPEG-DASH. - **Processing Backends:** Flexible support for ffmpeg, GStreamer, or alternative media frameworks.