ivirtex
ivirtex
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
ffmpeg has the best user experience
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
thanks!
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
it works now
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
wow, yeah, you are right
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
this is what ffmpeg has to say about this file:
[in#0 @ 00000290aeb99700] Error opening input: Invalid data found when processing input
Error opening input file .\output.pcm.
Error opening input files: Invalid data found when processing input
[in#0 @ 00000290aeb99700] Error opening input: Invalid data found when processing input
Error opening input file .\output.pcm.
Error opening input files: Invalid data found when processing input
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
so I guess I must be doing something wrong with ffmpeg
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
what's interesting, I just have tried importing it into Audacity and it actually plays without any problems
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
decoder is set to the same settings
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
ffmpeg .\output.pcm -f s16le -ac 1 -ar 48000 voice.wav
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
is there any other example not using prism-media?
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
the example is using some alpha 4 years old version of prism-media
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
.on(VoiceConnectionStatus.Disconnected, async (error) => {
console.log("Voice Connection disconnected");

await Bun.write("voice.pcm", voiceBuffers);
})
.on(VoiceConnectionStatus.Disconnected, async (error) => {
console.log("Voice Connection disconnected");

await Bun.write("voice.pcm", voiceBuffers);
})
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
const voiceBuffers: Buffer[] = [];
const encoder = new OpusEncoder(48000, 1);
encoder.setBitrate(48000);

for (const voiceChannelMember of vc.members.values()) {
console.log(voiceChannelMember.user.username);

const stream = voiceConnection.receiver.subscribe(voiceChannelMember.id);
stream.on("data", async (data) => {
const decoded = encoder.decode(data);
console.log(`Decoded ${decoded.length} bytes of data`);

// Append the decoded data to the buffer
voiceBuffers.push(decoded);
});
}
const voiceBuffers: Buffer[] = [];
const encoder = new OpusEncoder(48000, 1);
encoder.setBitrate(48000);

for (const voiceChannelMember of vc.members.values()) {
console.log(voiceChannelMember.user.username);

const stream = voiceConnection.receiver.subscribe(voiceChannelMember.id);
stream.on("data", async (data) => {
const decoded = encoder.decode(data);
console.log(`Decoded ${decoded.length} bytes of data`);

// Append the decoded data to the buffer
voiceBuffers.push(decoded);
});
}
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
Well, I might did something wrong with saving them
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
Then using FFmpeg I convert it to a .wav file, but it says that pcm file is corrupted
26 replies
DIAdiscord.js - Imagine an app
Created by ivirtex on 2/19/2025 in #djs-voice
Decoding Opus packets from `AudioReceiveStream` using @discordjs/opus
Opus decoder returns 16-bit PCM buffer, so I collect these buffers and save them to a .pcm file
26 replies