diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-03-22 20:51:55 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-03-22 20:51:55 +0100 |
| commit | 7d15aec5be589b2d53c89a427a9c99dec2dea1ff (patch) | |
| tree | 9e9f6e3955f7f6c85ceb348f3bdb25594cf02a20 /ui | |
| parent | d437d7cbf967a2520ebaa2cf63ae5e4b3cb4544a (diff) | |
| download | jellything-7d15aec5be589b2d53c89a427a9c99dec2dea1ff.tar jellything-7d15aec5be589b2d53c89a427a9c99dec2dea1ff.tar.bz2 jellything-7d15aec5be589b2d53c89a427a9c99dec2dea1ff.tar.zst | |
hacky solution for init in jsp
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/client-scripts/src/player/mod.ts | 4 | ||||
| -rw-r--r-- | ui/client-scripts/src/player/track/mse.ts | 22 |
2 files changed, 18 insertions, 8 deletions
diff --git a/ui/client-scripts/src/player/mod.ts b/ui/client-scripts/src/player/mod.ts index 3927be0..8121a1f 100644 --- a/ui/client-scripts/src/player/mod.ts +++ b/ui/client-scripts/src/player/mod.ts @@ -337,8 +337,8 @@ function send_player_progress(node_id: string, player: Player) { const nt = player.video.currentTime if (t != nt) { t = nt - const start = nt < 1 * 60 - const end = nt > player.duration.value - 5 * 60 + const start = nt < 60 + const end = nt > player.duration.value - 300 // if (!start && !send_watched) fetch(`/n/${node_id}/progress?t=${nt}`, { method: "POST" }) if (end && !sent_watched) { diff --git a/ui/client-scripts/src/player/track/mse.ts b/ui/client-scripts/src/player/track/mse.ts index faee825..4f30f0b 100644 --- a/ui/client-scripts/src/player/track/mse.ts +++ b/ui/client-scripts/src/player/track/mse.ts @@ -20,6 +20,7 @@ export class MSEPlayerTrack extends PlayerTrack { private append_queue: AppendRange[] = []; public index?: FragmentIndex public active_format = new OVar<UsableFormat | undefined>(undefined); + private queue_format_init: number = -1 public usable_formats: UsableFormat[] = [] constructor( @@ -163,12 +164,21 @@ export class MSEPlayerTrack extends PlayerTrack { this.loading.add(index); this.update_buf_ranges() // TODO update format selection - const url = `${this.base_url}/${this.track_index}/${this.active_format.value!.format_index}/frag${index}.${this.active_format.value!.container}`; - const buf = await this.player.downloader.download(url); + const f = this.active_format.value!; + let init: ArrayBuffer | undefined + if (this.queue_format_init != f.format_index) { + init = await this.player.downloader.download(`${this.base_url}/${this.track_index}/${f.format_index}/init.${f.container}`); + } + const frag = await this.player.downloader.download(`${this.base_url}/${this.track_index}/${f.format_index}/frag${index}.${f.container}`); await new Promise<void>(cb => { if (!this.index) return; if (this.abort.signal.aborted) return; - this.append_queue.push({ buf, ...this.index[index], index, cb }); + if (this.queue_format_init != f.format_index) { + if (!init) return console.warn("queue switched back in-load"); + this.append_queue.push({ buf: init, ...this.index[index], index, cb }); + this.queue_format_init = f.format_index + } + this.append_queue.push({ buf: frag, ...this.index[index], index, cb }); this.tick_append(); }); } @@ -179,12 +189,12 @@ export class MSEPlayerTrack extends PlayerTrack { this.append_queue.splice(0, 1); this.current_load = frag; // TODO why is appending so unreliable?! sometimes it does not add it - this.source_buffer.changeType(track_to_content_type(this.active_format.value!.format, this.active_format.value!.container)); + // this.source_buffer.changeType(track_to_content_type(this.active_format.value!.format, this.active_format.value!.container)); + this.source_buffer.appendBuffer(frag.buf); // this.source_buffer.timestampOffset = this.active_format.value?.container == "mpeg4" ? frag.start : 0 // this.source_buffer.timestampOffset = this.trackinfo.kind == "video" && !this.active_format.value!.format.remux ? frag.start : 0 // this.source_buffer.timestampOffset = this.active_format.value?.format.remux ? 0 : frag.start - this.source_buffer.timestampOffset = 0 - this.source_buffer.appendBuffer(frag.buf); + // this.source_buffer.timestampOffset = 0 } } |