feat(train): smaller copies of lossless tracks, transcoded by Jellyfin to Opus (ADR 0030, D52)

Smaller copies, on by default on the music screen, has the music job
fetch a file above 256 kbps as Opus at 128 kbps in WebM, but for the
lossy codecs (MP3, AAC, Vorbis, Opus) at any rate. Each track keeps
which copy its file is; switching fetches the other copy without
working out the tempo again, the file kept until the new one is whole.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-29 19:09:06 +01:00
commit 2a7cd927c4
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1368,6 +1368,19 @@ Strava. What was found, 27 Oct:
deleted. The app's own download (`JellyfinClient.download`) is gone, and so is
the tempo over the channel. Not tried on a phone: WorkManager's runs, the
downloads of large files over HttpURLConnection.
- Built: 14c. The playlists' items are asked with `fields=MediaSources`, which gives
each track's bitrate and its audio stream's codec (`MusicTrack.bitrate`, `codec`).
*Smaller copies* on the music screen (`MusicSettings.smaller`, on by default, kept
through signing out) has a file above 256 kbps fetched from
`/Audio/<id>/stream.webm?audioCodec=opus&audioBitRate=128000&maxAudioChannels=2`,
but for the lossy codecs `mp3`, `aac`, `vorbis` and `opus` at any rate: the
decision's "MP3s and AACs come as they are" taken over its threshold, which a
320 kbps MP3 is above. Each track keeps which copy its file is (`MusicCopy`, a
track kept before counting as the original); one kept as another copy than wanted
goes to the job again, without its tempo worked out again, and the job's line
names the copy, so that one fetched as the original doesn't stop the smaller from
coming. Not tried against a real Jellyfin: that its transcoding answers this path
with WebM, how long it takes for a track.
## Consequences