Repository navigation
Duration and seeking with transcoded streams: some measurements against Navidrome, and a few questions #791
Unanswered
aarizaga90
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi! I've been trying to understand why song duration shows as
--:--and seeking is unavailable when streaming with transcoding (reported in #725 and as Problem 3 in #672), and I ran some measurements against my own server. I'm not an iOS developer and I don't know the Amperfy codebase, so I'm posting this as data and questions rather than as a diagnosis. The tests were put together with AI assistance, so please sanity-check anything that looks off — I'm happy to re-run or adjust them.Setup: Navidrome 0.64.0, MP3 streaming format, uncached tracks (I varied
maxBitRateon each request to avoid the transcoding cache), sources in FLAC, M4A and MP3.What I measured
1. No byte ranges on an uncached transcode
2. No Xing/Info header in the transcoded MP3
Across 15 samples (3 source formats × 5 bitrates) the first 8 KB always contained
LAMEandID3, neverXingorInfo.3.
estimateContentLength=truereturns a Content-Length that is consistently ~2.3% larger than what is deliveredThe declared figure matches duration × bitrate × 1024 / 8, the delivered one duration × bitrate × 1000 / 8. No audio was missing in any of these — measured duration always matched the track. (I did see truncation, but only when requesting non-standard bitrates such as 179, which I don't think any client does.)
4.
timeOffsetworks, and accuratelyMy server advertises
transcodeOffsetv1 viagetOpenSubsonicExtensions. On a 257 s track,&timeOffset=60returned a stream measuring 197.5 s with ffprobe.https://opensubsonic.netlify.app/docs/extensions/transcodeoffset/
My questions
timeOffset(re-opening the stream at the requested position when the server advertisestranscodeOffset) been considered? I don't know how well that fits AudioStreaming's model.I'm aware this has been discussed before (#305 has a lot of analysis) and that there may be good reasons these routes were not taken — I'd genuinely like to know. Happy to run further tests against my server if that helps.
Environment: Amperfy 2.1.1 (build 22), iPhone 16 Pro on iOS 27.0, Navidrome 0.64.0.
Thanks a lot for the app — it's what I use every day.
All reactions