diff --git a/play-dl/YouTube/classes/SeekStream.ts b/play-dl/YouTube/classes/SeekStream.ts index 9b60e8c..62b60ef 100644 --- a/play-dl/YouTube/classes/SeekStream.ts +++ b/play-dl/YouTube/classes/SeekStream.ts @@ -97,7 +97,7 @@ export class SeekStream { if (!this.stream.headerparsed) { const stream = await request_stream(this.url, { headers: { - range: `bytes=0-1000` + range: `bytes=0-` } }).catch((err: Error) => err); @@ -112,10 +112,12 @@ export class SeekStream { this.request = stream; stream.pipe(this.stream, { end: false }); - stream.once('end', () => { - this.stream.state = WebmSeekerState.READING_DATA; - res(''); - }); + this.stream.once("headComplete", () => { + stream.unpipe(this.stream) + stream.destroy() + this.stream.state = WebmSeekerState.READING_DATA + res('') + }) } else res(''); }).catch((err) => err); if (parse instanceof Error) { diff --git a/play-dl/YouTube/classes/WebmSeeker.ts b/play-dl/YouTube/classes/WebmSeeker.ts index efef00b..9706d96 100644 --- a/play-dl/YouTube/classes/WebmSeeker.ts +++ b/play-dl/YouTube/classes/WebmSeeker.ts @@ -131,6 +131,11 @@ export class WebmSeeker extends Duplex { if (ebmlID.name === 'ebml') this.headfound = true; else return new Error('Failed to find EBML ID at start of stream.'); } + if(ebmlID.name === "cluster") { + this.emit("headComplete") + this.cursor = this.chunk.length + break; + } const data = this.chunk.slice( this.cursor + this.data_size, this.cursor + this.data_size + this.data_length