diff --git a/breadbot.js b/breadbot.js index 8031cd2..48ae887 100644 --- a/breadbot.js +++ b/breadbot.js @@ -121,19 +121,22 @@ client.on(Events.VoiceStateUpdate, async (oldState, newState) => { const receiver = connection.receiver receiver.speaking.on("start", (user_id) => { - const opusStream = receiver.subscribe(user_id, { + receiver.subscribe(user_id, { end: { behavior: EndBehaviorType.AfterSilence, duration: 1000 } }) - .pipe(new prism.opus.OggDemuxer()) - .pipe(new prism.opus.Decoder({ - rate: 48000, - channels: 2, - frameSize: 960 + .pipe(new prism.opus.OggLogicalBitstream({ + opusHead: new prism.opus.OpusHead({ + channelCount: 2, + sampleRate: 48000 + }), + pageSizeControl: { + maxPackets: 10 + } })) - .pipe(fs.createWriteStream("." + path.sep + "media" + path.sep + "voice_audio" + path.sep + newCallID + path.sep + `${Date.now()}-${user_id}.pcm`)) + .pipe(fs.createWriteStream("." + path.sep + "media" + path.sep + "voice_audio" + path.sep + newCallID + path.sep + `${Date.now()}-${user_id}.ogg`)) }) } catch (error) { diff --git a/package-lock.json b/package-lock.json index 370f69c..ae238a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "libsodium-wrappers": "^0.7.13", "mysql": "^2.18.1", "mysql2": "^3.6.3", - "prism-media": "^1.3.5" + "prism-media": "^2.0.0-alpha.0" }, "devDependencies": { "eslint": "^8.27.0" @@ -120,6 +120,31 @@ "node": ">=16.9.0" } }, + "node_modules/@discordjs/voice/node_modules/prism-media": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", + "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", + "peerDependencies": { + "@discordjs/opus": ">=0.8.0 <1.0.0", + "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0", + "node-opus": "^0.3.3", + "opusscript": "^0.0.8" + }, + "peerDependenciesMeta": { + "@discordjs/opus": { + "optional": true + }, + "ffmpeg-static": { + "optional": true + }, + "node-opus": { + "optional": true + }, + "opusscript": { + "optional": true + } + } + }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -611,6 +636,11 @@ "node": ">=6.0.0" } }, + "node_modules/duplex-child-process": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/duplex-child-process/-/duplex-child-process-1.0.1.tgz", + "integrity": "sha512-tWbt4tyioDjyK5nh+qicbdvBvNjSXsTUF5zKUwSauuKPg1mokjwn/HezwfvWhh6hXoLdgetY+ZlzU/sMwUMJkg==" + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1820,28 +1850,11 @@ } }, "node_modules/prism-media": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", - "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", - "peerDependencies": { - "@discordjs/opus": ">=0.8.0 <1.0.0", - "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0", - "node-opus": "^0.3.3", - "opusscript": "^0.0.8" - }, - "peerDependenciesMeta": { - "@discordjs/opus": { - "optional": true - }, - "ffmpeg-static": { - "optional": true - }, - "node-opus": { - "optional": true - }, - "opusscript": { - "optional": true - } + "version": "2.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-2.0.0-alpha.0.tgz", + "integrity": "sha512-QL9rnO4xo0grgj7ptsA+AzSCYLirGWM4+ZcyboFmbkYHSgaXIESzHq/SXNizz2iHIfuM2og0cPhmSnTVMeFjKg==", + "dependencies": { + "duplex-child-process": "^1.0.1" } }, "node_modules/process-nextick-args": { @@ -2441,6 +2454,14 @@ "prism-media": "^1.3.5", "tslib": "^2.5.0", "ws": "^8.13.0" + }, + "dependencies": { + "prism-media": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", + "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", + "requires": {} + } } }, "@eslint/eslintrc": { @@ -2803,6 +2824,11 @@ "esutils": "^2.0.2" } }, + "duplex-child-process": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/duplex-child-process/-/duplex-child-process-1.0.1.tgz", + "integrity": "sha512-tWbt4tyioDjyK5nh+qicbdvBvNjSXsTUF5zKUwSauuKPg1mokjwn/HezwfvWhh6hXoLdgetY+ZlzU/sMwUMJkg==" + }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -3718,10 +3744,12 @@ "dev": true }, "prism-media": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", - "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", - "requires": {} + "version": "2.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-2.0.0-alpha.0.tgz", + "integrity": "sha512-QL9rnO4xo0grgj7ptsA+AzSCYLirGWM4+ZcyboFmbkYHSgaXIESzHq/SXNizz2iHIfuM2og0cPhmSnTVMeFjKg==", + "requires": { + "duplex-child-process": "^1.0.1" + } }, "process-nextick-args": { "version": "2.0.1",