Seek precise decimal issues fixed
This commit is contained in:
parent
995ff67ebd
commit
da91f6a1ec
@ -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;
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user