From 33af1109f61a44f600924d500175cc2e9b277362 Mon Sep 17 00:00:00 2001 From: absidue <48293849+absidue@users.noreply.github.com> Date: Sun, 16 Jan 2022 22:55:11 +0100 Subject: [PATCH] Fix seeking in videos with only one cue --- play-dl/YouTube/classes/WebmSeeker.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/play-dl/YouTube/classes/WebmSeeker.ts b/play-dl/YouTube/classes/WebmSeeker.ts index ad7c9b4..f5970da 100644 --- a/play-dl/YouTube/classes/WebmSeeker.ts +++ b/play-dl/YouTube/classes/WebmSeeker.ts @@ -33,6 +33,7 @@ export class WebmSeeker extends Duplex { private data_length: number; private sec: number; private time: number; + private foundCue: boolean; constructor(sec: number, options: WebmSeekerOptions) { super(options); @@ -46,6 +47,7 @@ export class WebmSeeker extends Duplex { this.data_size = 0; this.sec = sec; this.time = Math.floor(sec / 10) * 10; + this.foundCue = false; } private get vint_length(): number { @@ -86,10 +88,12 @@ export class WebmSeeker extends Duplex { const data = this.header.segment.cues[i]; if (Math.floor((data.time as number) / 1000) === this.time) { position = data.position as number; - clusterlength = this.header.segment.cues[i + 1].position! - position - 1; + if (this.header.segment.cues.length > 1) + clusterlength = this.header.segment.cues[i + 1].position! - position - 1; break; } else continue; } + if (clusterlength === 0) return position; return Math.round(position + (time_left / 20) * (clusterlength / 500)); }