Discord.js录制语音频道的MP3?
Discord.js record MP3 of voice channel?
我正在尝试在我的 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
保存到我的电脑上。如果我尝试在 windows 媒体播放器或其他任何设备中打开文件,它无法识别文件类型。我使用了 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 文件保存到指定位置。
我正在尝试在我的 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
保存到我的电脑上。如果我尝试在 windows 媒体播放器或其他任何设备中打开文件,它无法识别文件类型。我使用了 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 文件保存到指定位置。