如何桥接字节数组和音频流?

Gin*_*as_ 6 audio streaming bytearray audio-streaming node.js

我正在为我的流媒体应用创建一个中继服务器.基本上,它应该像这样工作:

  1. 客户端A通过套接字将麦克风音频流式传输到服
  2. 服务器a获取流并可能暂时将其存储在某个地方?(不确定)
  3. 客户端B从服务器获取流并播放它.

基本上,我已完成第一部分(将麦克风音频发送到服务器):

while(isStreaming)
{
    minBufSize = recorder.read(buffer, 0, buffer.length);
    mSocket.emit("stream", Arrays.toString(buffer));
}
Run Code Online (Sandbox Code Playgroud)

第三部分完成,只需播放音频:

mediaplayer.reset();
mediaplayer.setDataSource("http://192.168.1.2:1337/stream");
mediaplayer.prepare();
mediaplayer.start();
Run Code Online (Sandbox Code Playgroud)

现在我不确定如何桥接传入的字节数组和流.这是我目前的服务器代码:

var ms = require('mediaserver');
// from server to Client B
exports.letsStream = function(req, res, next) {
    ms.pipe(req, res, "sample_song_music_file.mp3");
};

// from Client A to server
exports.handleSocketConnection = function(socket)
{
    console.log("connected");
    socket.on('stream', function(data)
    {
        var bytes = JSON.parse(data);
        console.log("GETTING STREAM:" + bytes);
    });
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?如何直接传输该字节数组?

Jam*_*mas 0

媒体服务器模块仅支持流式传输现有音频,而不支持“实时”流。这行不通。

实现这三项任务的一种方法是:

  1. https://www.npmjs.com/package/microphone以字节流形式读取麦克风音频。
  2. http://binaryjs.com/处理通过 websocket 将字节流传输到服务器,然后发送到客户端。如果设置了两条单独的路径,一条用于发送数据,一条用于接收。将数据从一个流发送到另一流。
  3. 使用https://github.com/TooTallNate/node-speaker在客户端 B 上播放传入的 PCM 数据流