Node.js 将PCM流传输到一个函数中
我有两个PCM流(Node.js 将PCM流传输到一个函数中,node.js,audio,stream,pcm,Node.js,Audio,Stream,Pcm,我有两个PCM流(decoder1+decoder2): 及 现在,我想将流导入一个mix函数,在这里我可以使用缓冲区函数,如: function mixStream(buf1, buf2, callback) { // The mixStream-Function is not implemented yet (dummy) var out = new Buffer(buf1.length); for (i = 0; i < buf1.length; i+=2)
decoder1
+decoder2
):
及
现在,我想将流导入一个mix函数,在这里我可以使用缓冲区函数,如:
function mixStream(buf1, buf2, callback) {
// The mixStream-Function is not implemented yet (dummy)
var out = new Buffer(buf1.length);
for (i = 0; i < buf1.length; i+=2) {
var uint = Math.floor(.5 * buf1.readInt16LE(i));
out.writeInt16LE(uint, i);
}
this.push(out);
callback();
}
用于输出到扬声器。这可能吗?嗯,pipe()
函数实际上意味着一个流链接到另一个流,例如,一个可读的流链接到一个可写的流。这个“链接”过程是在可读流上的任何数据块准备就绪后,将写入可写流,以及一个更复杂的逻辑,如暂停()
和恢复()
,以处理背压
因此,您所要做的就是创建一个类似管道的函数,同时处理两个可读流,这将从stream1和stream2中排出数据,一旦数据准备好,将它们写入目标可写流
我强烈建议您浏览流的Node.js文档
希望这就是你想要的:)这也正是我想要的。你找到答案了吗?对不起,我对PCM流等非常不熟悉。我最不了解的是如何将两个流合并成一个输出流——我以为这个问题是在问为什么我要对其进行悬赏。我对PCM不太熟悉,但如果你正在考虑将两个流合并成一个,我很乐意提供进一步的帮助,但也许你有时间先看医生?顺便说一句,如果你想把两个曲目叠加到一个音频文件中。我推荐这个。您可以简单地使用child_进程生成ffmpeg来完成这项工作。我认为我对流非常了解,但显然还不够哈哈。正如你评论的那样,我正在Node.js中搜索PCM流的基础知识,希望我能从中得到一些东西。
var readable2 = fs.createReadStream("track2.mp3");
var decoder2 = new lame.Decoder({
channels: 2,
mode: lame.STEREO
});
readable2.pipe(decoder2);
function mixStream(buf1, buf2, callback) {
// The mixStream-Function is not implemented yet (dummy)
var out = new Buffer(buf1.length);
for (i = 0; i < buf1.length; i+=2) {
var uint = Math.floor(.5 * buf1.readInt16LE(i));
out.writeInt16LE(uint, i);
}
this.push(out);
callback();
}
mixStream(decoder1.pipe(), decoder2.pipe(), function() { }).pipe(new Speaker());