Seek precise decimal issues fixed

This commit is contained in:
killer069 2022-01-04 16:21:29 +05:30
parent 995ff67ebd
commit da91f6a1ec
2 changed files with 11 additions and 10 deletions

View File

@ -112,12 +112,12 @@ export class SeekStream {
this.request = stream; this.request = stream;
stream.pipe(this.stream, { end: false }); stream.pipe(this.stream, { end: false });
this.stream.once("headComplete", () => { this.stream.once('headComplete', () => {
stream.unpipe(this.stream) stream.unpipe(this.stream);
stream.destroy() stream.destroy();
this.stream.state = WebmSeekerState.READING_DATA this.stream.state = WebmSeekerState.READING_DATA;
res('') res('');
}) });
} else res(''); } else res('');
}).catch((err) => err); }).catch((err) => err);
if (parse instanceof Error) { if (parse instanceof Error) {
@ -131,7 +131,7 @@ export class SeekStream {
this.timer.reuse(); this.timer.reuse();
return this.seek(sec); return this.seek(sec);
} }
const bytes = this.stream.seek(sec); const bytes = this.stream.seek(parseFloat(sec.toFixed(2)));
if (bytes instanceof Error) { if (bytes instanceof Error) {
this.stream.emit('error', bytes); this.stream.emit('error', bytes);
this.bytes_count = 0; this.bytes_count = 0;

View File

@ -79,6 +79,7 @@ export class WebmSeeker extends Duplex {
let position = 0; let position = 0;
const time = Math.floor(sec / 10) * 10; const time = Math.floor(sec / 10) * 10;
this.time_left = (sec - time) * 1000 || 0; this.time_left = (sec - time) * 1000 || 0;
this.time_left = Math.round(this.time_left / 20) * 20;
if (!this.header.segment.cues) return new Error('Failed to Parse Cues'); if (!this.header.segment.cues) return new Error('Failed to Parse Cues');
for (const data of this.header.segment.cues) { for (const data of this.header.segment.cues) {
@ -131,9 +132,9 @@ export class WebmSeeker extends Duplex {
if (ebmlID.name === 'ebml') this.headfound = true; if (ebmlID.name === 'ebml') this.headfound = true;
else return new Error('Failed to find EBML ID at start of stream.'); else return new Error('Failed to find EBML ID at start of stream.');
} }
if(ebmlID.name === "cluster") { if (ebmlID.name === 'cluster') {
this.emit("headComplete") this.emit('headComplete');
this.cursor = this.chunk.length this.cursor = this.chunk.length;
break; break;
} }
const data = this.chunk.slice( const data = this.chunk.slice(