start work with broadcast streams

This commit is contained in:
Amish Shah
2016-12-29 21:22:13 +00:00
parent e9af3f0a1f
commit 72a99f9582
6 changed files with 153 additions and 10 deletions

View File

@@ -3,6 +3,7 @@ const Prism = require('prism-media');
const StreamDispatcher = require('../dispatcher/StreamDispatcher');
const Collection = require('../../../util/Collection');
const OpusEncoders = require('../opus/OpusEngineList');
const VoiceBroadcast = require('../VoiceBroadcast');
const ffmpegArguments = [
'-analyzeduration', '0',
@@ -33,6 +34,10 @@ class AudioPlayer extends EventEmitter {
}
destroyStream(stream) {
if (stream instanceof VoiceBroadcast) {
this.streams.delete(stream);
return;
}
const data = this.streams.get(stream);
if (!data) return;
const transcoder = data.transcoder;
@@ -77,6 +82,18 @@ class AudioPlayer extends EventEmitter {
dispatcher.on('error', () => this.destroyStream(stream));
return dispatcher;
}
playBroadcast(broadcast, { volume = 1, passes = 1 } = {}) {
const options = { volume, passes };
this.destroyAllStreams();
this.streams.set(broadcast, broadcast);
const dispatcher = new StreamDispatcher(this, broadcast, options);
dispatcher.on('end', () => this.destroyStream(broadcast));
dispatcher.on('error', () => this.destroyStream(broadcast));
dispatcher.on('speaking', value => this.voiceConnection.setSpeaking(value));
broadcast.registerDispatcher(dispatcher);
return dispatcher;
}
}
module.exports = AudioPlayer;