首页 > 解决方案 > 使用 socket.io-stream 从 getUserMedia() 广播流

问题描述

为了改进我的 VoIP 应用程序,我想创建一个实时音频流,所以我成功创建了一个我可以听到的音频流,但现在我需要将流发送到服务器,然后服务器将它重新发送给每个人,然后每个人都玩它。

服务器代码(不工作,导致错误):

  var streamToSend = ss.createStream();
  ss(socket).emit('voice', streamToSend);
  ss(socket).on("voice", function(stream) {
    stream.pipe(streamToSend);
  });

要发送的客户端代码(不工作,导致错误):

if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
  console.log('getUserMedia supported.');
  navigator.mediaDevices.getUserMedia(
    {
      audio: true
    })
    .then(function (streamm) {
      ss(socket).emit('voice', streamm);
    });
} else {
  console.log('getUserMedia not supported on your browser!');
}

要接收的客户端代码(未测试接收):

 ss(socket).on("voice", function(stream) {
   var context = new AudioContext({
     latencyHint: 'interactive',
     sampleRate: 44100,
   });
   var source = context.createMediaStreamSource(stream);
   source.connect(context.destination);
 });

而且出于安全考虑,我真的很想使用这种方法(我可以轻松加密数据)。我会很感激任何帮助:D

标签: node.jssocket.iovoipgetusermediasocket.io-stream

解决方案


推荐阅读