首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用webRTC实现麦克风录音

使用webRTC实现麦克风录音
EN

Stack Overflow用户
提问于 2016-11-18 14:33:19
回答 2查看 585关注 0票数 1

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

代码语言:javascript
复制
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 () {
    });
  }
};

客户端

代码语言:javascript
复制
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服务器都会创建buffer并将其保存为mp3。

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

EN

回答 2

Stack Overflow用户

发布于 2016-11-19 07:38:28

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

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

票数 0
EN

Stack Overflow用户

发布于 2016-11-19 14:40:42

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40670728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档