Closed yatli closed 1 year ago
@yatli Could you give me details about your external client? Are you using Sublime (Linux) and D-sub/Subsonic (Android) as you mentioned in #195?
I'm using Sonixd on Windows this time.
Notable settings:
Full config, minus the theme settings:
{
"discord": {
"enabled": false,
"clientId": "923372440934055968",
"serverImage": false
},
"obs": {
"enabled": false,
"url": "",
"type": "local",
"path": "",
"pollingInterval": 2000
},
"transcode": false,
"resume": false,
"autoUpdate": true,
"autoUpdateNotice": false,
"serverType": "subsonic",
"legacyAuth": true,
"language": "en",
"theme": "defaultDark",
"font": "Poppins",
"dynamicBackground": false,
"highlightOnRowHover": true,
"minimizeToTray": true,
"showDebugWindow": false,
"globalMediaHotkeys": false,
"systemMediaTransportControls": true,
"artistPageLegacy": false,
"startPage": "/",
"scrobble": true,
"systemNotifications": false,
"musicFolder": {
"id": null,
"albums": true,
"artists": true,
"dashboard": false,
"search": false,
"starred": false,
"music": true
},
"sidebar": {
"expand": true,
"width": "225px",
"coverArt": true,
"selected": [
"dashboard",
"nowplaying",
"favorites",
"songs",
"albums",
"artists",
"genres",
"folders",
"config",
"collapse",
"playlists",
"playlistList"
]
},
"selected": [
"dashboard",
"nowplaying",
"favorites",
"songs",
"albums",
"artists",
"genres",
"folders",
"config",
"collapse",
"playlists",
"playlistList"
],
"pagination": {
"music": {
"recordsPerPage": 50,
"serverSide": true
},
"album": {
"recordsPerPage": 50,
"serverSide": false
}
},
"volume": 1,
"audioDeviceId": null,
"seekForwardInterval": 5,
"seekBackwardInterval": 5,
"volumeFade": true,
"repeat": "none",
"shuffle": false,
"scrollWithCurrentSong": true,
"cacheImages": true,
"cacheSongs": false,
"pollingInterval": 15,
"fadeDuration": 0,
"fadeType": "equalPower",
"gridCardSize": 175,
"gridGapSize": 20,
"gridAlignment": "flex-start",
"playlistViewType": "list",
"albumViewType": "list",
"albumSortDefault": "random",
"musicSortDefault": "random",
"artistViewType": "list",
"musicListFontSize": "14",
"musicListRowHeight": "60.0",
"randomPlaylistTrackCount": 50,
"playbackFilters": [
{
"filter": "(\\(|\\[|~|-|()[Oo]ff [Vv]ocal(\\)|\\]|~|-|))",
"enabled": false
},
{
"filter": "((|\\(|\\[|~|-)[Ii]nst(rumental)?(\\)|\\]|~|-|))",
"enabled": false
}
],
"exitToTray": false,
"cachePath": "C:\\Users\\Yatao\\AppData\\Roaming\\Sonixd",
"titleBarStyle": "windows",
"server": "XXX",
"serverBase64": "XXX",
"username": "XXX",
"password": "XXX",
"salt": "XXX",
"hash": "XXX"
}
I can also test other clients. Will update this post when it's done.
@kagemomiji I tested a few aspects.
... It wants the server to serve even if it has a cached song 😅
So I'm learning my lesson here, clients have different quirks.
@yatli Thank you for your experiments.
I think that the reported bug is related to the client-side rather than the server-side(airsonic-advanced).
To minimize the seek latency, caching in client is a good solution, as demonstrated by the DSub experiment. If Sonixd properly manages the cache, there should be no need to transcode audio in airsonic-advanced.
Fortunately, ffmpeg supports seeking before encoding, so I can implement the /stream API to utilize this functionality. (There is offset query parameter, but for video https://opensubsonic.netlify.app/docs/endpoints/stream/) However, this cannot be achieved solely with a server-side implementation. Client-side implementation is also necessary since the server-side needs to know where in the audio to start, but Subsonic clients do not currently support such a request.
Thanks for explaining this.
Expect: the transcoder can start from an offset within the track, "near" the seek destination, so that playback resumes quickly after seek
I took it for granted that airsonic already has this feature, but it turns out to be the over-engineered imagination in my head :)
What happened?
This one does not affect normal playback experience, but makes client-side seeking slow, since every time it needs to wait for the server to finish transcoding.
Steps to reproduce
Expect: the transcoder can start from an offset within the track, "near" the seek destination, so that playback resumes quickly after seek Actual: transcoder takes a long time to finish, blocking playback.
Version
11.1.1 (Stable)
Version Detail
11.1.1 release
Operating System
ArchLinux w/Docker
Java Version
Docker default
Database
Other
DB Detail
Docker default
Configuration paramter
The disc is FLAC encodec and track-split, no CUE involved. Transcoder command:
ffmpeg %S -i %s -map 0:0 -b:a %bk -v 0 -f mp3 -
Proxy Server
No response
client detail
No response
language
None
Relevant log output