discord.js录制语音频道的MP3吗?
我正在尝试在我的discord.js机器人中创建一个录制命令。到目前为止,我的代码是:
const channel = message.member.voice.channel;
if(!channel) return message.channel.send('Join a VC first!');
const connection = await channel.join();
const receiver = connection.receiver.createStream(message.member, {
mode: "pcm",
end: "silence"
});
const writer = receiver.pipe(fs.createWriteStream('./recording.pcm'));
writer.on('finish', () => {
channel.leave();
message.channel.send('It went quiet, so I left...');
});
这会将recording.pcm
保存到我的PC。如果我试图在windows media player或任何其他地方打开该文件,它无法识别文件类型。我使用了Audacity导入原始音频功能,我可以听到我的录音,所以我知道它是有效的。然而,给用户提供这种类型的文件是非常不方便的。如何将此.pcm
文件转换为node.js中的.wav
或.mp3
?谢谢!
解决方案
您可以使用ffmpeg
-npm i ffmpeg
const ffmpeg = require('ffmpeg');
try {
var process = new ffmpeg('path/to/pcm/file');
process.then(function (audio) {
audio.fnExtractSoundToMP3('path/to/new/file.mp3', function (error, file) {
if (!error) console.log('Audio File: ' + file);
});
}, function (err) {
console.log('Error: ' + err);
});
} catch (e) {
console.log(e);
}
这应该会将新的mp3文件保存到指定位置。
相关文章