Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord.js是否录制语音频道的MP3?_Javascript_Node.js_Audio_Discord.js_Pcm - Fatal编程技术网

Javascript Discord.js是否录制语音频道的MP3?

Javascript Discord.js是否录制语音频道的MP3?,javascript,node.js,audio,discord.js,pcm,Javascript,Node.js,Audio,Discord.js,Pcm,我正在尝试在discord.js bot中创建一个记录命令。到目前为止,我的代码是: 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(m

我正在尝试在discord.js bot中创建一个记录命令。到目前为止,我的代码是:

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 media player或其他程序中打开该文件,它将无法识别该文件类型。我使用了Audacity导入原始音频功能,我可以听到我的录音,所以我知道它可以工作。然而,给用户提供这种类型的文件是非常不方便的。如何将此
.pcm
文件转换为node.js中的
.wav
.mp3
?谢谢

您可以使用
ffmpeg
-

const ffmpeg=require('ffmpeg');
试一试{
var process=new ffmpeg('path/to/pcm/file');
进程。然后(功能(音频){
audio.fnExtractSoundToMP3('path/to/new/file.mp3',函数(错误,文件){
if(!error)console.log('音频文件:'+文件);
});
},函数(err){
log('Error:'+err);
});
}捕获(e){
控制台日志(e);
}

这将把新的mp3文件保存到指定的位置。

您可以使用
ffmpeg
-

const ffmpeg=require('ffmpeg');
试一试{
var process=new ffmpeg('path/to/pcm/file');
进程。然后(功能(音频){
audio.fnExtractSoundToMP3('path/to/new/file.mp3',函数(错误,文件){
if(!error)console.log('音频文件:'+文件);
});
},函数(err){
log('Error:'+err);
});
}捕获(e){
控制台日志(e);
}

这将把新的mp3文件保存到指定的位置。

为什么不直接用转换文件呢?它支持
pcm
格式的
raw
输入。node lame的readme.md建议不要在Windows上使用,而我正在使用Windows 10。为什么不直接将其转换为?它支持
pcm
格式的
raw
输入。node lame的readme.md建议不要在Windows上使用,我使用的是Windows 10。我尝试过,但不起作用(没有错误消息),事实上,如果输出文件(mp3)已经存在,执行代码会删除该文件。我尝试过,但实际上不起作用(没有错误消息),如果输出文件(mp3)已经存在,则执行代码将删除该文件。