add initial goals documentation #1
62
goals.md
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
## 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.
|
||||
|
marcsello marked this conversation as resolved
Outdated
blint marked this conversation as resolved
marcsello
commented
I think it might worth including that what content does exactly a CDN node deliver? For starters I think serving only "media" would be good. I think it might worth including that what content does exactly a CDN node deliver? For starters I think serving only "media" would be good.
|
||||
- **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.
|
||||
|
blint marked this conversation as resolved
Outdated
marcsello
commented
This isn't a goal, that's an explanation. This isn't a goal, that's an explanation.
|
||||
- **Offline Access:**
|
||||
- Clients can batch-download content for offline playback, respecting user permissions and device limits.
|
||||
|
marcsello marked this conversation as resolved
Outdated
marcsello
commented
What are device limits exactly? What are device limits exactly?
patrik
commented
Just too much copying and pasting. It should not be there. Just too much copying and pasting. It should not be there.
patrik
commented
Removed Removed
|
||||
- **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.
|
||||
|
blint marked this conversation as resolved
Outdated
marcsello
commented
I think this would be better in the "Nice to have/later" part. Sounds a bit complex to be a core feature. (especially if you want to pack all this up to a single binary) I think this would be better in the "Nice to have/later" part. Sounds a bit complex to be a core feature. (especially if you want to pack all this up to a single binary)
|
||||
|
||||
## Nice to Have / Later
|
||||
|
blint marked this conversation as resolved
marcsello
commented
This is not a goal, this is an explanation. This is not a goal, this is an explanation.
|
||||
|
||||
- **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.
|
||||
|
blint marked this conversation as resolved
Outdated
marcsello
commented
What does a "trusted federation network" mean in this context? What does a "trusted federation network" mean in this context?
blint
commented
a connection between the instances via VPN a connection between the instances via VPN
marcsello
commented
I think we should write that instead. To me it's more exact and therefore easier to understand. I think we should write that instead. To me it's more exact and therefore easier to understand.
|
||||
- **Parental controls**
|
||||
- **Jellyfin-Compatible API** and **Plex-Compatible API**
|
||||
- **Plugin Support:** Extend functionality with custom or third-party plugins.
|
||||
|
patrik marked this conversation as resolved
Outdated
patrik
commented
This part should be moved to the later section @blint . This part should be moved to the later section @blint .
|
||||
- **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
|
||||
|
marcsello marked this conversation as resolved
Outdated
marcsello
commented
I would add "Resiliency" as in. "Temporary outage in one service should not affect/disrupt the viewing experience" or something similar along the lines I would add "Resiliency" as in. "Temporary outage in one service should not affect/disrupt the viewing experience" or something similar along the lines
patrik
commented
Added Added
|
||||
|
||||
- **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.
|
||||
I think CDN deserves it's own section here. I personally have a few ideas for it.