gpt4 book ai didi

node.js - 如何使用 naudiodon/portaudio 解决输出下溢错误?

转载 作者:行者123 更新时间:2023-12-03 12:15:47 27 4
gpt4 key购买 nike

我正在编写一个小的 node.js 程序,它将能够在选定的音频设备上播放 wav 声音文件。
声音开始良好,但在文件结束前停止。

这是我的代码:

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);

当我修改 highWaterMark fs.createReadStream 的选项,它会稍微改变声音中的剪切位置,但直到它结束为止都不会发生。
我总是收到 portAudio status - output underflow记录错误。

谢谢你的帮助 !

最佳答案

我遇到了类似的错误,我的解决方案是手动写入 AudioIO 流而不是使用管道命令。

所以代替

reader.on("format", () => {
reader.pipe(ao);
ao.start();
});


你会用
ao.start();
reader.on("data",chunk=>ao.write(chunk));

输出下溢通常不是问题,但为了避免它,我在播放每个文件之前初始化了一个新的 PortAudio 实例,但是这仅适用于您不关心轻微延迟的情况。

关于node.js - 如何使用 naudiodon/portaudio 解决输出下溢错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54804102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com