node.js - 播放/暂停音频流 NodeJs

标签 node.js audio stream lame speaker

我使用 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/

相关文章:

node.js - 在Node.JS中处理错误的正确方法是什么?

node.js - 带有命名参数的 `WHERE col IN`

c# - 在Gstreamer(C#)中使用管道播放音频

math - 正确渲染波形概览(+/-伏)

.net - MemoryStream 而不是 byte[] 作为资源添加的文件?

c# - 我们如何有效地从 C# 中的文本文件中只读取整数

node.js - 查找用户在 MongoDB 上定期活跃的连续天数?

javascript - script标签如何解析node_modules的路径?

c# - 将MP3加载到音频阵列中并将其分配给GameObject阵列的成员

firebase - 在另一个流中使用一个流 flutter