【问题标题】:How to bridge byte array and audio streaming?如何桥接字节数组和音频流?
【发布时间】:2015-08-14 01:02:20
【问题描述】:

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

  1. 客户端 A 通过套接字将麦克风音频流式传输到服务器
  2. 服务器获取流并可能将其临时存储在某个地方?(不确定)
  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);
    });
}

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

【问题讨论】:

  • 您好,您找到解决方案了吗?
  • @BackPacker 不,很久以前就停止寻找它了。
  • 好的,谢谢,我想我必须使用 webrtc 或类似的东西
  • @BackPacker 既然你问了,你找到解决方案了吗?哈哈
  • @Gintas_ 你找到解决方案了吗?我有完全相同的情况,我正在苦苦挣扎..

标签: node.js audio streaming bytearray audio-streaming


【解决方案1】:

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

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

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

【讨论】:

  • 但是我已经完成了阅读麦克风输入部分。而且我不必使用mediaserver 模块。我希望有一个专门用于此的模块。此外,第 1 部分和第 2 部分是 android,而不是 nodejs。
猜你喜欢
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2014-06-17
  • 2011-05-07
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多