Implement music serving/streaming in shanty-serve
#22
Notifications
Total Time Spent: 1 hour 24 minutes
connor
1 hour 24 minutes
No due date set.
Dependencies
No dependencies set.
Reference: Shanty/Main#22
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The
shanty-servecrate serves music files for streaming playback. The initial approach is to implement a Subsonic-compatible API, which would allow users to use existing Subsonic-compatible clients (DSub, Ultrasonic, Sonixd, Sublime Music, etc.) to stream their library.Subsonic API compatibility — implement the core Subsonic REST API endpoints:
ping— server statusgetLicense— return a valid license (always "valid" for self-hosted)getMusicFolders— return configured library pathsgetArtists/getArtist— artist listing and detailsgetAlbum— album details with tracksgetSong— track detailsstream— stream the actual audio file (with optional transcoding)download— download the original filegetCoverArt— serve album cover artsearch3— search the librarygetPlaylists/getPlaylist— playlist supportscrobble— track play historyTranscoding — optionally transcode to a lower bitrate on-the-fly (using ffmpeg) for bandwidth-limited clients. Support common output formats (MP3, OPUS, AAC).
Authentication — the Subsonic API uses a simple username/password scheme. Implement basic auth that works with existing clients.
Design Considerations
Acceptance Criteria
Dependencies
ffmpegfor transcoding