节点:同时播放两个音频流

时间:2016-09-18 08:28:55

标签: node.js audio raspberry-pi

我正在开发一个应用程序,我想同时播放两个mp3文件,并希望分别控制每个播放器的声音。为此,我需要单独控制每个流的响度。

我希望我可以使用node-speakerpcm-volume执行此操作但我不能并行:

var Speaker = require("speaker");
var lame = require("lame");
var fs = require("fs");
var volume = require("pcm-volume");

var readable = fs.createReadStream("coming-out.mp3");

// see node-lame documentation for more information
var decoder1 = new lame.Decoder({
    channels: 2,
    bitDepth: 16,
    sampleRate: 44100,
    bitRate: 128,
    outSampleRate: 22050,
    mode: lame.STEREO
});

var masterSpeaker = new Speaker();


// Create a volume instance
var v1 = new volume();

v1.pipe(masterSpeaker); // pipe volume to speaker
decoder1.pipe(v1); // pipe PCM data to volume
readable.pipe(decoder1); // pipe file input to decoder


setTimeout(function() {
    // Create a volume instance
    // see node-lame documentation for more information
    var decoder2 = new lame.Decoder({
        channels: 2,
        bitDepth: 16,
        sampleRate: 44100,
        bitRate: 128,
        outSampleRate: 22050,
        mode: lame.STEREO
    });


    var v2 = new volume();
    v2.pipe(masterSpeaker); // pipe volume to speaker
    decoder2.pipe(v2); // pipe PCM data to volume
    readable.pipe(decoder2); // pipe file input to decoder
}, 2000);

另一种可能性是使用外部音频播放器,如VLC播放器,并通过api从节点控制它们,但vlc不能打开多个。

有没有其他linux音频播放器,在raspberry pi上工作并运行多个,它有一个api来控制音量?

我更喜欢节点扬声器的第一种可能性,因为我不需要太多的依赖。

0 个答案:

没有答案