我有一个用 Node.js 制作的在 Windows 中录制麦克风声音的简单程序。我在执行时遇到了一些麻烦。
在录制时,它可以完美运行并创建一个 .wav 文件,因为它必须这样做。但是我在一个循环中做这个并接受用户选项(作为一个带有菜单的程序)。问题是,当我再次按下键来录制另一个 .wav 文件时,我的程序会中断而没有给出任何错误或警告。
我把这部分的代码留在这里。
const fs = require('fs')
const record = require('node-record-lpcm16')
const inquirer = require('inquirer')
var file = fs.createWriteStream('test.wav', { encoding: 'binary' })
main()
async function main(){
var option =0
while(option!=1){
//take option
var option = await getOption()
switch (option){
case 0:
await startRecording() //Wait for user to press ENTER
record.start().pipe(file)
console.log("Recording audio")
await stopRecording() //Wait for user to press ENTER
record.stop()
console.log("Audio finished")
break;
case 1:
process.exit(0)
}
}
}
function startRecording()
{
const questions = [
{
name: 'key',
type: 'input',
message: 'Press enter to start recording'
}]
return inquirer.prompt(questions)
}
function stopRecording()
{
const questions = [
{
name: 'key',
type: 'input',
message: 'Press enter to stop recording'
}]
return inquirer.prompt(questions)
}
function getOption(){
const questions = [
{
name: 'option',
type: 'integer',
message: 'Select your option (0 or 1): ',
validate: function( value ) {
if (value.length) {
return true
} else {
return 'Select your option (0 or 1): '
}
}
}]
return inquirer.prompt(questions)
}
程序在第二次打印 stopRecording() 函数的消息后中断。
有谁知道为什么会这样?