小编Osk*_*ski的帖子

通过websockets进行音频流

我将创建语音聊天。我的后端服务器在Node.js上运行,并且客户端与服务器之间的几乎每个连接都使用socket.io。

websocket是否适合我的用例?与P2P相比,我更喜欢通信客户端->服务器->客户端,因为我希望甚至有1000个客户端连接到一个房间。

如果websocket没问题,那么哪种方法最好将AudioBuffer发送到服务器并在其他客户端上回放?我这样做:

navigator.getUserMedia({audio: true}, initializeRecorder, errorCallback);
function initializeRecorder(MediaStream) {
    var audioCtx = new window.AudioContext();
    var sourceNode = audioCtx.createMediaStreamSource(MediaStream);

    var recorder = audioCtx.createScriptProcessor(4096, 1, 1);
    recorder.onaudioprocess = recorderProcess;

    sourceNode.connect(recorder);

    recorder.connect(audioCtx.destination);
}
function recorderProcess(e) {
    var left = e.inputBuffer.getChannelData(0);

    io.socket.post('url', left);
}
Run Code Online (Sandbox Code Playgroud)

但是在接收到其他客户端的数据后,我不知道如何从缓冲区阵列播放此音频流。

编辑

1)为什么如果我不将ScriptProcessor(记录器变量)连接到目标,则不会触发onaudioprocess方法?

文档信息-“尽管您只想可视化一些音频数据,但不必提供目的地” -Web音频概念和用法

2)为什么将记录器变量连接到目标之后,为什么我的扬声器没有听到任何声音,如果我将sourceNode变量直接连接到目标,我可以听到。即使onaudioprocess方法不执行任何操作。

有人可以帮忙吗?

audio-streaming websocket node.js socket.io asp.net-web-api

1
推荐指数
1
解决办法
7890
查看次数