drop the temporary stream-range log — it found its bug
28 range requests per song start on iOS turned out to be AVPlayer paging through ~1 MB of embedded cover art in 32 KB round trips. The library has been slimmed (23,833 files rewritten, art capped at 80 KB, ID3v1 stripped); the log served its purpose.
This commit is contained in:
@@ -54,13 +54,6 @@ export async function streamAudioFile(
|
|||||||
}
|
}
|
||||||
if (!s.isFile()) return new Response('Not a file', { status: 404 });
|
if (!s.isFile()) return new Response('Not a file', { status: 404 });
|
||||||
|
|
||||||
// TEMPORARY diagnostic (2026-08-29): iOS first-play issues ~28 range requests in 2 s where Android
|
|
||||||
// issues one. This prints each request range so we can see WHICH bytes AVPlayer asks for — small
|
|
||||||
// sequential chunks would mean a transport problem, scattered offsets a VBR duration scan.
|
|
||||||
console.log(
|
|
||||||
`[stream] ${new Date().toISOString().slice(11, 23)} ${rangeHeader ?? "FULL"} · ${relPath.slice(relPath.lastIndexOf("/") + 1)}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
const total = s.size;
|
const total = s.size;
|
||||||
const ext = absPath.slice(absPath.lastIndexOf('.') + 1).toLowerCase();
|
const ext = absPath.slice(absPath.lastIndexOf('.') + 1).toLowerCase();
|
||||||
const contentType = CONTENT_TYPES[ext] ?? 'application/octet-stream';
|
const contentType = CONTENT_TYPES[ext] ?? 'application/octet-stream';
|
||||||
|
|||||||
Reference in New Issue
Block a user