mirror of
https://github.com/danbulant/discord.js
synced 2026-05-30 12:51:55 +00:00
32 lines
1 KiB
JavaScript
32 lines
1 KiB
JavaScript
const EventEmitter = require('events');
|
|
const prism = require('prism-media');
|
|
const PacketHandler = require('./PacketHandler');
|
|
|
|
class VoiceReceiver extends EventEmitter {
|
|
constructor(connection) {
|
|
super();
|
|
this.connection = connection;
|
|
this.packets = new PacketHandler(this);
|
|
/**
|
|
* Emitted whenever there is a warning
|
|
* @event VoiceReceiver#debug
|
|
* @param {Error|string} error The error or message to debug
|
|
*/
|
|
this.packets.on('error', err => this.emit('debug', err));
|
|
this.connection.sockets.udp.socket.on('message', buffer => this.packets.push(buffer));
|
|
}
|
|
|
|
createStream(user, { mode = 'opus' } = {}) {
|
|
user = this.connection.client.users.resolve(user);
|
|
if (!user) throw new Error('VOICE_USER_MISSING');
|
|
const stream = this.packets.makeStream(user.id);
|
|
if (mode === 'pcm') {
|
|
const decoder = new prism.opus.Decoder({ channels: 2, rate: 48000, frameSize: 1920 });
|
|
stream.pipe(decoder);
|
|
return decoder;
|
|
}
|
|
return stream;
|
|
}
|
|
}
|
|
|
|
module.exports = VoiceReceiver;
|