【发布时间】:2015-08-11 19:02:59
【问题描述】:
我正在尝试使用 webrtc 通过 getUserMedia() 获取音频并使用 socket.io 将其发送到服务器(socket.io 支持音频、视频、二进制数据),然后服务器会将其广播到所有连接的客户端。问题是当流到达连接的客户端时,它被转换为 JSON 对象而不是媒体流对象。所以我无法发送音频我也尝试过 socket.io-stream 模块但我没有成功。您能帮我正确捕获音频流并将其发送给所有连接的客户端吗?
这是发送数据的客户端代码
navigator.getUserMedia({audio: true, video: false}, function(stream) {
video.src = window.URL.createObjectURL(stream);
webcamstream = stream;
media = stream; /// here the datatype of media is mediaStream object
socket.emit("sendaudio", media);
}, function(e){
console.log(error);
});
在接收客户端时代码如下
socket.on('receiveaudio' , function(media)
{
console.log(media); //but here i am receiving it as a simple object
other.src= media;
});
【问题讨论】:
-
我认为您应该以发送二进制数据为目标,如
Buffer或Blob对象。 Socket.io 从 1.0 开始支持二进制数据。尝试将您的 mediaStream 对象转换为缓冲区,然后发送它。另一方面,根据缓冲区重新创建对象。 -
@MaximePiraux 你能否发送任何可以帮助我将媒体流转换为缓冲区或 blob 的好教程或示例的链接。我觉得很难做到。
标签: node.js audio socket.io webrtc getusermedia