aboutsummaryrefslogtreecommitdiff
path: root/web/script/player/track.ts
diff options
context:
space:
mode:
Diffstat (limited to 'web/script/player/track.ts')
-rw-r--r--web/script/player/track.ts18
1 files changed, 10 insertions, 8 deletions
diff --git a/web/script/player/track.ts b/web/script/player/track.ts
index b089932..e64cdf3 100644
--- a/web/script/player/track.ts
+++ b/web/script/player/track.ts
@@ -1,6 +1,6 @@
import { OVar } from "../jshelper/mod.ts";
import { JhlsTrack, TimeRange } from "./jhls.d.ts";
-import { BufferRange } from "./player.ts";
+import { BufferRange, Player } from "./player.ts";
const TARGET_BUFFER_DURATION = 15
const MIN_BUFFER_DURATION = 1
@@ -12,8 +12,13 @@ export class PlayerTrack {
private loading = new Set<number>()
public buffered = new OVar<BufferRange[]>([])
private append_queue: AppendRange[] = []
- constructor(media_source: MediaSource, private node_id: string, private track_index: number, private metadata: JhlsTrack) {
- this.source_buffer = media_source.addSourceBuffer("video/webm")
+ constructor(
+ private player: Player,
+ private node_id: string,
+ private track_index: number,
+ private metadata: JhlsTrack
+ ) {
+ this.source_buffer = this.player.media_source.addSourceBuffer("video/webm")
this.source_buffer.mode = "segments"
this.source_buffer.addEventListener("updateend", () => {
if (this.current_load) {
@@ -70,10 +75,7 @@ export class PlayerTrack {
async load(index: number) {
this.loading.add(index)
- const res = await fetch(`/n/${encodeURIComponent(this.node_id)}/stream?format=hlsseg&tracks=${this.track_index}&index=${index}`)
- if (!res.ok) throw new Error(`segment fail i=${index} t=${this.track_index}`);
- const buf = await res.arrayBuffer()
-
+ const buf = await this.player.downloader.download(`/n/${encodeURIComponent(this.node_id)}/stream?format=hlsseg&tracks=${this.track_index}&index=${index}`)
await new Promise<void>(cb => {
this.append_queue.push({ buf, ...this.metadata.segments[index], index, cb })
this.tick_append()
@@ -89,4 +91,4 @@ export class PlayerTrack {
this.current_load = seg
}
}
-} \ No newline at end of file
+}