如何桥接字节数组和音频流?
Posted
技术标签:
【中文标题】如何桥接字节数组和音频流?【英文标题】:How to bridge byte array and audio streaming? 【发布时间】:2015-08-14 01:02:20 【问题描述】:我正在为我的流媒体应用创建中继服务器。基本上,它应该是这样工作的:
-
客户端 A 通过套接字将麦克风音频流式传输到服务器
服务器获取流并可能将其临时存储在某个地方?(不确定)
客户端 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_ 你找到解决方案了吗?我有完全相同的情况,我正在苦苦挣扎.. 【参考方案1】:mediaserver 模块仅支持流式传输现有音频,而不支持“实时”流式传输。这行不通。
实现这三项任务的一种方法是:
-
https://www.npmjs.com/package/microphone 将麦克风音频读取为字节流。
http://binaryjs.com/ 处理通过 websockets 将字节流传输到服务器,然后发送到客户端。如果您设置了两条单独的路径,一条用于发送数据,一条用于接收。将数据从一个流发送到另一个。
使用https://github.com/TooTallNate/node-speaker在客户端B上播放传入的PCM数据流
【讨论】:
但是我已经完成了阅读麦克风输入部分。而且我不必使用mediaserver
模块。我希望有一个专门用于此的模块。此外,第 1 部分和第 2 部分是 android,而不是 nodejs。以上是关于如何桥接字节数组和音频流?的主要内容,如果未能解决你的问题,请参考以下文章