MediaRecorder替代品

吉米

我一直在MediaRecorder努力保存MediaStream由创建的getUserMedia我对结果感到非常满意,但是我需要类似的东西,它具有更好的跨浏览器支持。

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

var mediaRec;
navigator.getUserMedia({
    audio:true
},function(stream){
    mediaRec=new MediaRecorder(stream);
    mediaRec.start(10000);
    mediaRec.ondataavailable=function(e){

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

似乎MediaRecorder只能在Firefox浏览器和Firefox OS中使用

但是,它MediaRecorder是W3C规范的一部分谷歌浏览器表示已打算在将来的版本中支持它,但与此同时我有哪些选择呢?

我知道Flash和Silverlight等插件可以实现相同的功能MediaRecorder,但我需要的是JavaScript解决方案。

有人可以帮忙吗?

本杰明·特伦特(Benjamin Trent)

所有其他可用选项将利用高级API,并在浏览器/ JavaScript级别实现。因此,由于它已集成到浏览器中,并且没有将其与Firefox提供的MediaRecorder API相提并论,并且具有在浏览器实现中处于“较低级别”的优势。

我知道可以肯定起作用的一个选项(尽管利用了Web Audio API)是Matt Diamond的Recorderjs

还有使用来自Matt的github的Recorderjs的示例。

  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);
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章