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

7
我正在为我的流媒体应用创建一个中继服务器。基本上,它应该像这样工作:
  1. 客户端A通过套接字向服务器流传麦克风音频
  2. 服务器a获取流并且可能将其暂时存储在某个地方?(不确定)
  3. 客户端B从服务器获取流并播放它。
基本上,我完成了第一部分(将麦克风音频发送到服务器)。
while(isStreaming)
{
    minBufSize = recorder.read(buffer, 0, buffer.length);
    mSocket.emit("stream", Arrays.toString(buffer));
}

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

mediaplayer.reset();
mediaplayer.setDataSource("http://192.168.1.2:1337/stream");
mediaplayer.prepare();
mediaplayer.start();

我不确定如何将传入的字节数组和流媒体桥接。这是我的当前服务器代码:

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);
    });
}

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

嗨,你找到解决方案了吗? - Fayçal
@BackPacker 嗯,我很久以前就停止寻找它了。 - Gintas_
好的,谢谢。我想我得使用WebRTC或类似的东西。 - Fayçal
@BackPacker,既然你问了,你找到解决方案了吗?哈哈 - George
@Gintas_ 你找到解决方案了吗?我有完全相同的情况,但是我很困难。 - msamhoury
1个回答

0

mediaserver 模块仅支持流式传输现有音频,而不是“实时”流。这样做行不通。

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

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

但是我已经完成了读取麦克风输入部分。而且我不必使用 mediaserver 模块。我希望有一个专门用于此的模块。另外,第一部分和第二部分是针对 Android 的,而不是 Node.js。 - Gintas_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接