首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaRecorder替代方案

MediaRecorder替代方案
EN

Stack Overflow用户
提问于 2014-09-04 09:03:35
回答 1查看 3.8K关注 0票数 3

我一直在使用MediaRecorder来保存由getUserMedia创建的MediaStream。我真的很满意结果,但是我需要类似的东西,有更好的跨浏览器支持。

下面是我如何使用MediaRecorder的一些示例代码(只是为了给您提供一些上下文):

代码语言:javascript
复制
var mediaRec;
navigator.getUserMedia({
    audio:true
},function(stream){
    mediaRec=new MediaRecorder(stream);
    mediaRec.start(10000);
    mediaRec.ondataavailable=function(e){

    };
},function(err){});

看来只适用于火狐浏览器和火狐操作系统

不管是是W3C规范的一部分还是谷歌Chrome已经表示,它打算在未来的版本中支持它,但在此期间,我有什么选择呢?

我知道插件(如Flash )可以实现与MediaRecorder相同的功能,但我需要的是一个javascript解决方案。

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-07 19:35:59

所有其他可用的选项都将使用高级API,并在Browser/JavaScript级别实现。因此,没有一个能与火狐提供的MediaRecorder API相媲美,因为它集成到浏览器中,并且在浏览器的实现中具有“较低级别”的好处。

我知道可以肯定的一个选项(虽然使用了Web音频API)是马特·戴蒙德录音机

以及使用Matt中的Recorderjs的例子。

代码语言:javascript
复制
  var audio_context;
  var recorder;

  function startUserMedia(stream) {
    var input = audio_context.createMediaStreamSource(stream);

    input.connect(audio_context.destination);

    recorder = new Recorder(input);
  }

  function startRecording() {
    recorder.record();
  }

  function stopRecording(button) {
    recorder.stop();
    createDownloadLink();

    recorder.clear();
  }

  function createDownloadLink() {
    recorder.exportWAV(function(blob) {
      var url = URL.createObjectURL(blob);
      var li = document.createElement('li');
      var au = document.createElement('audio');
      var hf = document.createElement('a');

      au.controls = true;
      au.src = url;
      hf.href = url;
      hf.download = new Date().toISOString() + '.wav';
      hf.innerHTML = hf.download;
      li.appendChild(au);
      li.appendChild(hf);
      recordingslist.appendChild(li);
    });
  }

  window.onload = function init() {
    try {
      // webkit shim
      window.AudioContext = window.AudioContext || window.webkitAudioContext;
      navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
      window.URL = window.URL || window.webkitURL;

      audio_context = new AudioContext;

    navigator.getUserMedia({audio: true}, startUserMedia, function(e) {
      console.log('No live audio input: ' + e);
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25661351

复制
相关文章

相似问题

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