我正在编写一个小的node.js程序,它将能够在所选音频设备上播放wav声音文件。 声音开始良好,但在文件结束之前已停止。
这是我的代码:
displayData
当我修改const fs = require("fs");
const wav = require("wav");
const portAudio = require("naudiodon");
const ao = new portAudio.AudioIO({
outOptions: {
channelCount: 2,
sampleFormat: portAudio.SampleFormat24Bit,
sampleRate: 44100,
}
});
const name = "myfile.wav";
const file = fs.createReadStream(`./sounds/${name}`);
const reader = new wav.Reader();
reader.on("format", () => {
reader.pipe(ao);
ao.start();
});
file.pipe(reader);
process.on("SIGINT", ao.quit);
的{{1}}选项时,它会稍微改变声音中的剪切位置,但是直到结束时它才消失。
我总是收到highWaterMark
日志错误。
感谢您的帮助!
答案 0 :(得分:0)
我一直遇到类似的错误,我的解决方案是手动写入AudioIO流,而不使用管道命令。
所以不是
reader.on("format", () => {
reader.pipe(ao);
ao.start();
});
您将使用
ao.start();
reader.on("data",chunk=>ao.write(chunk));
输出下溢通常不是问题,但是为了避免出现这种情况,我在播放每个文件之前初始化了PortAudio的新实例,但是仅在您不关心轻微延迟的情况下才适用。