-
-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Which example is this bug report for?
basic
Issue description
git clone https://github.com/discordjs/voice-examples.git
cd recorder
npm i -D
npm start
Join a voice channel
/join
/record speaker@<your_user>
Talk into the mic, and after a while you'll see
π Started recording ./recordings/1696122267181-dimsey8_0.ogg
β
Recorded ./recordings/1696122267181-dimsey8_0.ogg
π Started recording ./recordings/1696122271590-dimsey8_0.ogg
π Started recording ./recordings/1696122275391-dimsey8_0.ogg
π Started recording ./recordings/1696122278329-dimsey8_0.ogg
(node:64307) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 end listeners added to [AudioReceiveStream]. Use emitter.setMaxListeners() to increase limit
(Use node --trace-warnings ... to show where the warning was created)
β
Recorded ./recordings/1696122278329-dimsey8_0.ogg
β
Recorded ./recordings/1696122275391-dimsey8_0.ogg
β
Recorded ./recordings/1696122271590-dimsey8_0.ogg
Code sample
import { createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream';
import { EndBehaviorType, VoiceReceiver } from '@discordjs/voice';
import type { User } from 'discord.js';
import * as prism from 'prism-media';
function getDisplayName(userId: string, user?: User) {
return user ? `${user.username}_${user.discriminator}` : userId;
}
export function createListeningStream(receiver: VoiceReceiver, userId: string, user?: User) {
const opusStream = receiver.subscribe(userId, {
end: {
behavior: EndBehaviorType.AfterSilence,
duration: 1000,
},
});
const oggStream = new prism.opus.OggLogicalBitstream({
opusHead: new prism.opus.OpusHead({
channelCount: 2,
sampleRate: 48000,
}),
pageSizeControl: {
maxPackets: 10,
},
});
const filename = `./recordings/${Date.now()}-${getDisplayName(userId, user)}.ogg`;
const out = createWriteStream(filename);
console.log(`π Started recording ${filename}`);
pipeline(opusStream, oggStream, out, (err) => {
if (err) {
console.warn(`β Error recording file ${filename} - ${err.message}`);
} else {
console.log(`β
Recorded ${filename}`);
}
});
}@discordjs/version version
@discordjs/[email protected]
Node.js version
Operating system
MacOS m1
Priority this issue should have
Medium (should be fixed soon)
I have tested this issue on a development release
No response