我使用 NodeJs 和 lame 和扬声器来播放 mp3 声音,如下所示:
var stream = fs.createReadStream('/path/to/dir/file.mp3');
var decoder = new lame.Decoder();
var speaker;
stream.pipe(decoder).on('format', function(format) {
speaker = new Speaker(format);
this.pipe(speaker);
});
这段代码工作正常,我的问题是当我希望它暂停时:
stream.unpipe();
它有效,声音暂停,但 3-4 秒后,我希望它立即暂停。我看过这篇文章:https://stackoverflow.com/questions/30225379/node-lame-play-stop-and-resume-audio但没有答案。 我认为存在延迟,因为当我调用 unpipe 时,流已经缓冲了接下来的 3-4 秒(或者我错了?),如果是这样,有没有办法正确管理缓冲区,或者在我调用 unpipe 时清理它?
谢谢。
最佳答案
您应该使用.pause()方法,与 .resume() 结合使用因为现在您正在分离流并关闭文件。
为什么播放需要几秒钟才能停止?因为流的缓冲区中仍然有数据。平均而言,数据量约为 70KB,因为流以 block 的形式读取数据。
关于node.js - 播放/暂停音频流 NodeJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33915055/