35 lines
897 B
JavaScript
Raw Permalink Normal View History

2023-11-29 18:23:54 +03:00
"use strict";
let NativeOpus;
let OpusScript;
module.exports.createOpus = function createOpus(samplingRate, channels, bitrate) {
if(!NativeOpus && !OpusScript) {
try {
NativeOpus = require("@discordjs/opus");
} catch(err) {
try {
OpusScript = require("opusscript");
} catch(err) { // eslint-disable no-empty
}
}
}
let opus;
if(NativeOpus) {
opus = new NativeOpus.OpusEncoder(samplingRate, channels);
} else if(OpusScript) {
opus = new OpusScript(samplingRate, channels, OpusScript.Application.AUDIO);
} else {
throw new Error("No opus encoder found, playing non-opus audio will not work.");
}
if(opus.setBitrate) {
opus.setBitrate(bitrate);
} else if(opus.encoderCTL) {
opus.encoderCTL(4002, bitrate);
}
return opus;
};