diff --git a/lib/Voice/AudioEncoder.js b/lib/Voice/AudioEncoder.js index 2cc0b942f..bb4b92aad 100644 --- a/lib/Voice/AudioEncoder.js +++ b/lib/Voice/AudioEncoder.js @@ -3,14 +3,22 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var cpoc = require("child_process"); -var opus = require("node-opus"); + +var opus; +try { + opus = require("node-opus"); +} catch (e) { + // no opus! +} var VoicePacket = require("./VoicePacket.js"); var AudioEncoder = (function () { function AudioEncoder() { _classCallCheck(this, AudioEncoder); - this.opus = new opus.OpusEncoder(48000, 1); + if (opus) { + this.opus = new opus.OpusEncoder(48000, 1); + } } AudioEncoder.prototype.opusBuffer = function opusBuffer(buffer) { diff --git a/lib/Voice/VoiceConnection.js b/lib/Voice/VoiceConnection.js index a0daaeb83..08393fc32 100644 --- a/lib/Voice/VoiceConnection.js +++ b/lib/Voice/VoiceConnection.js @@ -14,9 +14,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var WebSocket = require("ws"); var dns = require("dns"); var udp = require("dgram"); -var Opus = require('node-opus'); var fs = require("fs"); -var ffmpeg = require('fluent-ffmpeg'); var AudioEncoder = require("./AudioEncoder.js"); var VoicePacket = require("./VoicePacket.js"); var StreamIntent = require("./StreamIntent.js"); @@ -29,9 +27,6 @@ var VoiceConnection = (function (_EventEmitter) { _classCallCheck(this, VoiceConnection); _EventEmitter.call(this); - if (!Opus) { - console.log("HEY! WATCH OUT\n\n discord.js needs node-opus, you don't have it installed."); - } this.id = channel.id; this.voiceChannel = channel; this.client = client; @@ -42,7 +37,6 @@ var VoiceConnection = (function (_EventEmitter) { this.vWS = null; // vWS means voice websocket this.ready = false; this.vWSData = {}; - this.opus = new Opus.OpusEncoder(48000, 1); this.encoder = new AudioEncoder(); this.udp = null; this.playingIntent = null; @@ -165,7 +159,12 @@ var VoiceConnection = (function (_EventEmitter) { var self = this; self.playing = true; try { - + if (!self.encoder.opus) { + self.playing = false; + self.emit("error", "No Opus!"); + self.emit("debug", "Tried to use node-opus, but opus not available - install it!"); + return; + } var buffer = self.encoder.opusBuffer(rawbuffer); var packet = new VoicePacket(buffer, sequence, timestamp, self.vWSData.ssrc); return self.sendPacket(packet, callback); diff --git a/src/Voice/AudioEncoder.js b/src/Voice/AudioEncoder.js index 4597fe803..ae7b9f6bf 100644 --- a/src/Voice/AudioEncoder.js +++ b/src/Voice/AudioEncoder.js @@ -1,12 +1,20 @@ "use strict"; var cpoc = require("child_process"); -var opus = require("node-opus"); + +var opus; +try{ + opus = require("node-opus"); +}catch(e){ + // no opus! +} var VoicePacket = require("./VoicePacket.js"); class AudioEncoder{ constructor(){ - this.opus = new opus.OpusEncoder(48000, 1); + if(opus){ + this.opus = new opus.OpusEncoder(48000, 1); + } } opusBuffer(buffer){ diff --git a/src/Voice/VoiceConnection.js b/src/Voice/VoiceConnection.js index 74ffad002..fb02af894 100644 --- a/src/Voice/VoiceConnection.js +++ b/src/Voice/VoiceConnection.js @@ -10,9 +10,7 @@ var WebSocket = require("ws"); var dns = require("dns"); var udp = require("dgram"); -var Opus = require('node-opus'); var fs = require("fs"); -var ffmpeg = require('fluent-ffmpeg'); var AudioEncoder = require("./AudioEncoder.js"); var VoicePacket = require("./VoicePacket.js"); var StreamIntent = require("./StreamIntent.js"); @@ -21,9 +19,6 @@ var EventEmitter = require("events"); class VoiceConnection extends EventEmitter { constructor(channel, client, session, token, server, endpoint) { super(); - if (!Opus) { - console.log("HEY! WATCH OUT\n\n discord.js needs node-opus, you don't have it installed."); - } this.id = channel.id; this.voiceChannel = channel; this.client = client; @@ -34,7 +29,6 @@ class VoiceConnection extends EventEmitter { this.vWS = null; // vWS means voice websocket this.ready = false; this.vWSData = {}; - this.opus = new Opus.OpusEncoder(48000, 1); this.encoder = new AudioEncoder(); this.udp = null; this.playingIntent = null; @@ -162,7 +156,12 @@ class VoiceConnection extends EventEmitter { var self = this; self.playing = true; try { - + if(!self.encoder.opus){ + self.playing=false; + self.emit("error", "No Opus!"); + self.emit("debug", "Tried to use node-opus, but opus not available - install it!"); + return; + } var buffer = self.encoder.opusBuffer(rawbuffer); var packet = new VoicePacket(buffer, sequence, timestamp, self.vWSData.ssrc); return self.sendPacket(packet, callback);