Cleanup seeking code a bit
This commit is contained in:
parent
e24c430790
commit
210971495c
@ -1,4 +1,4 @@
|
||||
import { IncomingMessage } from 'http';
|
||||
import { IncomingMessage } from 'node:http';
|
||||
import { request_stream } from '../../Request';
|
||||
import { parseAudioFormats, StreamOptions, StreamType } from '../stream';
|
||||
import { video_stream_info } from '../utils/extractor';
|
||||
@ -102,11 +102,11 @@ export class SeekStream {
|
||||
}).catch((err: Error) => err);
|
||||
|
||||
if (stream instanceof Error) {
|
||||
rej(stream)
|
||||
rej(stream);
|
||||
return;
|
||||
}
|
||||
if (Number(stream.statusCode) >= 400) {
|
||||
rej(400)
|
||||
rej(400);
|
||||
return;
|
||||
}
|
||||
this.request = stream;
|
||||
@ -124,10 +124,9 @@ export class SeekStream {
|
||||
this.per_sec_bytes = 0;
|
||||
this.cleanup();
|
||||
return;
|
||||
}
|
||||
else if(parse === 400){
|
||||
} else if (parse === 400) {
|
||||
await this.retry();
|
||||
this.timer.reuse()
|
||||
this.timer.reuse();
|
||||
return this.seek(sec);
|
||||
}
|
||||
const bytes = this.stream.seek(sec);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { WebmElements, WebmHeader } from 'play-audio';
|
||||
import { Duplex, DuplexOptions } from 'stream';
|
||||
import { Duplex, DuplexOptions } from 'node:stream';
|
||||
|
||||
enum DataType {
|
||||
master,
|
||||
@ -54,7 +54,7 @@ export class WebmSeeker extends Duplex {
|
||||
return ++i;
|
||||
}
|
||||
|
||||
private get vint_value(): boolean {
|
||||
private vint_value(): boolean {
|
||||
if (!this.chunk) return false;
|
||||
const length = this.vint_length;
|
||||
if (this.chunk.length < this.cursor + length) return false;
|
||||
@ -75,7 +75,7 @@ export class WebmSeeker extends Duplex {
|
||||
|
||||
seek(sec: number): Error | number {
|
||||
let position = 0;
|
||||
let time = Math.floor(sec / 10) * 10;
|
||||
const time = Math.floor(sec / 10) * 10;
|
||||
this.time_left = (sec - time) * 1000 || 0;
|
||||
if (!this.header.segment.cues) return new Error('Failed to Parse Cues');
|
||||
|
||||
@ -98,7 +98,7 @@ export class WebmSeeker extends Duplex {
|
||||
let err: Error | undefined;
|
||||
|
||||
if (this.state === WebmSeekerState.READING_HEAD) err = this.readHead();
|
||||
else if (!this.seekfound) err = this.getClosetCluster();
|
||||
else if (!this.seekfound) err = this.getClosestCluster();
|
||||
else err = this.readTag();
|
||||
|
||||
if (err) callback(err);
|
||||
@ -115,9 +115,8 @@ export class WebmSeeker extends Duplex {
|
||||
|
||||
const ebmlID = this.parseEbmlID(this.chunk.slice(this.cursor, this.cursor + id).toString('hex'));
|
||||
this.cursor += id;
|
||||
const vint = this.vint_value;
|
||||
|
||||
if (!vint) {
|
||||
if (!this.vint_value()) {
|
||||
this.cursor = oldCursor;
|
||||
break;
|
||||
}
|
||||
@ -161,9 +160,8 @@ export class WebmSeeker extends Duplex {
|
||||
|
||||
const ebmlID = this.parseEbmlID(this.chunk.slice(this.cursor, this.cursor + id).toString('hex'));
|
||||
this.cursor += id;
|
||||
const vint = this.vint_value;
|
||||
|
||||
if (!vint) {
|
||||
if (!this.vint_value()) {
|
||||
this.cursor = oldCursor;
|
||||
break;
|
||||
}
|
||||
@ -203,7 +201,7 @@ export class WebmSeeker extends Duplex {
|
||||
this.cursor = 0;
|
||||
}
|
||||
|
||||
private getClosetCluster(): Error | undefined {
|
||||
private getClosestCluster(): Error | undefined {
|
||||
if (!this.chunk) return new Error('Chunk is missing');
|
||||
const count = this.chunk.indexOf('1f43b675', 0, 'hex');
|
||||
if (count === -1) throw new Error('Failed to find nearest Cluster.');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user