数日以来、webrtc 経由で送信されるオーディオストリームを視覚化しようとしています。通常のローカル ストリーム (webaudio マイクの使用) で正常に動作するいくつかのビジュアルを既に作成しました。
次に、 https://github.com/muaz-khan/WebRTC-Experiment/tree/master/で、さまざまなブラウザー間でマイク入力をストリーミングするための非常に興味深いものを見つけました。これは、フロントエンドのすべてのクライアントに対して 1 つのバックエンドから同じオーディオ データを取得するために必要です。
すべて正常に動作し、いくつかのテストでは、お互いの声が聞こえることが示されました。そのため、入ってくるストリームを視覚化することも問題ではないと考えました。
しかし、お互いの声が聞こえても、すべての周波数データは空 (ゼロ) です。
誰かがこれに対する解決策やヒントを持っていますか? 前もって感謝します!
これは、リモート周波数データを分析するための私のテストです:
これらのファイルを最初に含めます。
webrtc-experiment.com/firebase.js
webrtc-experiment.com/one-to-many-audio-broadcasting/meeting.js
var meeting = new Meeting('test');
var audioContext = new window.webkitAudioContext();
var analyser = audioContext.createAnalyser();
// on getting local or remote streams
meeting.onaddstream = function(e) {
console.log(e.type);
console.log(e.audio);
console.log(e.stream);
if(e.type === 'local')
{
//try it with the local stream, it works!
}
else
{
var source = audioContext.createMediaStreamSource(e.stream);
source.connect(analyser);
analyser.connect(audioContext.destination);
console.log(analyser.fftSize);
console.log(analyser.frequencyBinCount);
analyser.fftSize = 64;
console.log(analyser.frequencyBinCount);
var frequencyData = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(frequencyData);
function update() {
requestAnimationFrame(update);
analyser.getByteFrequencyData(frequencyData);
console.log(frequencyData);
};
update();
}
};
meeting.check();
meeting.setup('test');