2013-07-22 42 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)版本中。