前提・実現したいこと
JavaScriptのWeb Audio APIを利用して、マイクから受け取ったバッファをそのまま再生したいのですが、取得したバッファ(e.inputBuffer)の再生がうまくいきません。
該当のソースコード
JavaScript
1const handleSuccess = function(stream) { 2 const context = new AudioContext(); 3 const source = context.createMediaStreamSource(stream); 4 const processor = context.createScriptProcessor(1024, 1, 1); 5 const playSource = context.createBufferSource(); 6 7 source.connect(processor); 8 processor.connect(context.destination); 9 10 processor.onaudioprocess = function(e) { 11 12 // 再生 13 playSource.buffer = e.inputBuffer.getChannelData(0); 14 playSource.connect(context.destination); 15 playSource.start(); 16 17 }; 18}; 19 20navigator.mediaDevices.getUserMedia({ audio: true, video: false }) 21 .then(handleSuccess);
発生しているエラーメッセージ
Uncaught TypeError: Failed to set the 'buffer' property on 'AudioBufferSourceNode': Failed to convert value to 'AudioBuffer'.
試したこと
Web RTCを利用した簡単な方法(https://github.com/webrtc/samples/blob/gh-pages/src/content/getusermedia/audio/js/main.jsなど)も試してみましたが、一つ一つのバッファを取得したいため、onaudioprocessイベントを使用した方法を利用したいと思っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/15 14:08