2013-07-22 43 views
4

我试图从Chrome 29 Beta版中的HTML5中使用HTML5进行录音(它已启用其beta 29中的web音频支持)。在下面的代码中,ProcessAudio是Web音频过滤器功能,我从其中接收来自麦克风的输入缓冲区。我得到正确的样本量。但是,移动Chrome中的音频pcm样本始终为零。 Chrome是否禁用其移动版本音频滤镜的输入?有没有人在Chrome移动版本中使用HTML5进行录音工作? 以下代码在Chrome(桌面版)中正常工作。使用html5捕获移动镀铬上的麦克风输入

<!DOCTYPE HTML> 
    <html> 
    <head> 
    <script> 
     function GetMedia(obj, fnSuccess, fnFailure) 
     { 
      if(navigator.getUserMedia) 
      { 
       return navigator.getUserMedia(obj, fnSuccess, fnFailure); 
      } 
      else if(navigator.webkitGetUserMedia) 
      { 
       return navigator.webkitGetUserMedia(obj, fnSuccess, fnFailure); 
      } 
      else if(navigator.mozGetUserMedia) 
      { 
       return navigator.mozGetUserMedia(obj, fnSuccess, fnFailure); 
      } 
      else if(navigator.msGetUserMedia) 
      { 
       return navigator.msGetUserMedia(obj, fnSuccess, fnFailure); 
      } 
      alert("no audio capture"); 
     } 

     var incrementer = 0; 
     function ProcessAudio(e) 
     { 
      var inputBuffer = e.inputBuffer.getChannelData(0); 
      var outputBuffer = e.outputBuffer.getChannelData(0); 
      outputBuffer.set(inputBuffer, 0); 
      document.getElementById("display").innerText = 
          incrementer + " " + inputBuffer[0]; 
      incrementer++; 

     } 

     var context = null; 

     function Success(localMediaStream) 
     { 
      context = new window.webkitAudioContext(); 
      var microphone = context.createMediaStreamSource(localMediaStream); 
      var node = context.createScriptProcessor(4096, 1, 1); 
      node.onaudioprocess = ProcessAudio; 
      microphone.connect(node); 
      node.connect(context.destination); 
     } 
     function Error(err) 
     { 
      alert("no audio support"); 
     } 
     function load(e) 
     { 
      GetMedia({audio:true,video:false}, Success, Error); 
     } 
    </script> 
    </head> 
    <body onload="load(event)"> 
    <div>Audio Player</div> 
    <div id="display"></div> 
    <video id="localvideo" autoplay="autoplay" style="opacity:1"></video> 
    </body> 
    </html> 
+0

仅供参考,因为Chrome for mobile(稳定版和Beta版)已经更新,好消息是现在所有的工作都正常,如预期的那样,还有现场输入。点击代码! PS:也许我的错误报告做到了C: – JSmyth

回答

1

现在,在Android版Chrome beta版中,inputBuffer存在一个问题 - 如您所述,它始终包含零(至少在我测试的那些设备上) - 已确认。这并没有太大的帮助,但为了演示的目的,我现在可以实现的最好方式是通过<audio>对象播放“实时”输入流。见here。点击“录制”,然后开始播放音频对象。除此之外的其余部分是TARFU在当前的测试版中。猜猜我正在等G族人尽快修补它。但我发现,zingaya.com在Android版Chrome Beta上正常工作(即将音频记录并回放给您)。试试看,他们会播放你的流。显然,这是通过利用WebRTC。换句话说,你显然可以这样记录一个音频流,我还没有想出如何做到这一点。如果你想出点什么,请发布它。另一方面,G-guys正在快速工作 - 他们已经发布了不到一周前的新测试版本,至少可以播放用XHR获取的音频。之前的版本甚至无法做到这一点。

2

我们现在的Web音频输入工作在Android版Chrome(31.0.1650.11)版本中。