Discord.jsの断続的な音声を穴埋めする
最終更新: 2024年4月27日
この記事は、Discord.jsで受信できる断続的な音声の穴埋めをするストリームのメモです。
class FillSilenceStream extends stream.Transform {
current: Buffer[];
interval: NodeJS.Timeout;
constructor(rate: number = 48000, channels: number = 1, frameSize: number = 960) {
super();
this.current = [];
this.interval = setInterval(() => {
if (this.current.length === 0) {
this.push(Buffer.alloc(frameSize * 2 * channels));
} else {
this.push(this.current.shift());
}
}, 1000 / (rate / frameSize));
}
_write(chunk: Buffer, encoding: BufferEncoding, callback: (error?: Error | null | undefined) => void): void {
this.current.push(chunk);
callback();
}
_read() {}
}