小编Nau*_*hir的帖子

使用 node.js 中的 socket.io 通过 webrtc 广播实时音频

我正在尝试使用 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);
});
Run Code Online (Sandbox Code Playgroud)

在接收客户端时,代码如下

socket.on('receiveaudio' , function(media)
{
   console.log(media); //but here i am receiving it as a simple object
   other.src= media;
});
Run Code Online (Sandbox Code Playgroud)

audio node.js socket.io webrtc getusermedia

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

CanvasRenderingContext2D.putImageData 的参数 1 未实现 ImageData 接口

大家好,我正在尝试使用 node.js 制作一个 html5 cavas 应用程序,但我遇到了一个问题,我使用 getImagedata() 获取图像数据并将其作为 JSON 对象发送到服务器,服务器将该对象传递给所有连接的客户端但我收到“CanvasRenderingContext2D.putImageData 的参数 1 未实现 ImageData 接口。” 所有其他客户端上的错误。任何帮助将不胜感激,以下是将发送图像的客户端代码:

var output = function(mousestartposition , currentmouseposition){
  **lastpositionpic = context.getImageData(0,0,canvas.width ,      canvas.height);**
    var data = {
        mousestartposition : mousestartposition ,
        currentmouseposition:currentmouseposition,
        lastpositionpic : lastpositionpic
    }
    socket.emit('senddraw' , data);
 }
Run Code Online (Sandbox Code Playgroud)

接收图像的客户端代码如下:

 socket.on('receivedraw' , function(data)
 {
     mousestartposition = data.mousestartposition;
     var currentmouseposition = data.currentmouseposition;
     lastpositionpic = data.lastpositionpic;
     **context.putImageData(lastpositionpic,0,0);** // i am getting error on this line
     draw(currentmouseposition);
 });
Run Code Online (Sandbox Code Playgroud)

html javascript node.js html5-canvas

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

如何将getUsermedia音频流转换为blob或缓冲区?

我从getUserMeda获取音频流,然后将其转换为blob或缓冲区并将其发送到服务器,因为音频正在进行我使用socket.io将其发送到服务器如何将音频媒体流转换为缓冲区?

以下是我编写的代码

navigator.getUserMedia({audio: true, video: false}, function(stream) {
webcamstream = stream;
var media = stream.getAudioTracks();
socket.emit("sendaudio", media);
},
function(e){
   console.log(e);
  }
});
Run Code Online (Sandbox Code Playgroud)

如何将流转换为缓冲区并将其发送到node.js服务器,因为流来自getusermedia函数?

javascript buffer blob audio-streaming webrtc

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