【问题标题】:Using webRTC for recording sound through microphone使用 webRTC 通过麦克风录制声音
【发布时间】:2016-11-18 06:33:19
【问题描述】:

我正在开发一个记录用户音频的应用程序。为了录制音频,我使用了 getUserMedia API。音频的最大长度约为 15 分钟。我不想将它存储在缓存中。我通过直接流式传输到节点 js 服务器来做到这一点。服务器对其进行流式传输并进行编码,以便生成 mp3 文件。它是由这样的事情完成的。

var encoder;
var lame = require('lame');
var fs = require('fs');

var encodeAudio = function (data) {
  // my own logic here ---- >
  // Encode audio is below
      encoder = lame.Encoder({
        channels: 2,
        bitDepth: 16,
        sampleRate: 22050,
        bitRate: 128,
        outSampleRate: 22050,
        mode: lame.STEREO
      });
      encoder.pipe(fs.createWriteStream('/tmp/' + data.name + '/audio.mp3'));
    }
    encoder.write(new Buffer(data.buffer), function () {
    });
  }
};

客户端

navigator.getUserMedia = ( navigator.getUserMedia ||
                     navigator.webkitGetUserMedia ||
                     navigator.mozGetUserMedia ||
                     navigator.msGetUserMedia);
  navigator.getUserMedia({audio: true, video: false}, function (stream) {
    var audioContext = window.AudioContext;
    var context = new audioContext();
    window.audioInput = context.createMediaStreamSource(stream);
    var bufferSize = 2048;
    var recorder = context.createScriptProcessor(bufferSize, 1, 1);
    recorder.onaudioprocess = self.onAudioProcess.bind(self);
    audioInput.connect(recorder);
    recorder.connect(context.destination);
  }, this.onAudioError);

这里的数据是从客户端从 socket.io 发送的。因此,每当从客户端发送一段音频时,nodejs 服务器都会创建缓冲区并将其保存为 mp3。

现在我听说了 WebRTC 及其功能。但是它不适用于 safari 和 IE。然后我通过 Temasys 插件来使 WebRTC 与 safari 和 IE 兼容。但我很困惑,因为 Temasys 不支持录制。有人可以指导如何做到这一点吗?

【问题讨论】:

标签: node.js html webrtc getusermedia temasys


【解决方案1】:

我已经试过了。但是teamsys提到,通过使用这个我们不能像上面提到的那样记录和缓冲流。在上面的代码中,当它说 audioContext 没有在 IE 和 safari 中定义时。 Teamasys 插件绕过了其他东西,但无法绕过这个。

【讨论】:

    【解决方案2】:

    我与 Temasys 合作。如果您的服务已经在运行,并且您可以在 Chrome 中运行时使用您的服务录制流,您应该能够安装 Temasys 的 AdapterJS 或修改您自己的 AdapterJS 以使您的服务“Temasys Plugin Aware”,然后您的用户使用 IE 或 Safari 的服务需要安装 Temasys WebRTC 插件。您可以在此处找到有关安装免费版插件的完整文档:https://confluence.temasys.com.sg/display/TWPP

    您还可以加入一个由 Temasys 维护的公共邮件列表,专门用于 WebRTC 插件:https://groups.google.com/forum/#!forum/temasys-discuss-webrtcplugin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多