fix: add extra margin to avoid audios cutting off early
This commit is contained in:
@@ -11,6 +11,8 @@ import { PassThrough, Readable } from 'stream';
|
|||||||
|
|
||||||
import prism from 'prism-media';
|
import prism from 'prism-media';
|
||||||
|
|
||||||
|
const DURATION_MARGIN_PCT = 0.25;
|
||||||
|
|
||||||
export class StreamQueue {
|
export class StreamQueue {
|
||||||
private queue: Readable[] = [];
|
private queue: Readable[] = [];
|
||||||
private isPlaying = false;
|
private isPlaying = false;
|
||||||
@@ -133,13 +135,13 @@ export class MixedStream {
|
|||||||
});
|
});
|
||||||
|
|
||||||
transcoder.on('end', () => {
|
transcoder.on('end', () => {
|
||||||
const durationMs = (totalBytes / 192000) * 1000;
|
const durationMs = (totalBytes / 192000) * 1000 * (1 + DURATION_MARGIN_PCT);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
source.unpipe(transcoder);
|
source.unpipe(transcoder);
|
||||||
transcoder.unpipe(mixerInput);
|
transcoder.unpipe(mixerInput);
|
||||||
this.mixer.removeAudioinput(mixerInput);
|
|
||||||
transcoder.destroy();
|
transcoder.destroy();
|
||||||
|
this.mixer.removeAudioinput(mixerInput);
|
||||||
resolve();
|
resolve();
|
||||||
}, durationMs);
|
}, durationMs);
|
||||||
});
|
});
|
||||||
@@ -151,6 +153,7 @@ export class MixedStream {
|
|||||||
});
|
});
|
||||||
|
|
||||||
source.pipe(transcoder).pipe(mixerInput);
|
source.pipe(transcoder).pipe(mixerInput);
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user