angularjsビューで表現された一連のwebrtcストリームがあり、特定のボリュームしきい値を超えているものを視覚化し、一度に1つずつ聞くことができるようにしたいと考えています。これは可能ですか?私が見つけたものはすべて、音量を計算するためにストリームをオーディオコンテキストに接続する必要があるようです。そして、これはストリームを再生します。ストリームを再生せずに音量を計算できますか? 音量のしきい値を検出するために、hark.js で遊んでいます。
私のストリームはサードパーティの rtc ライブラリから派生したものですが、最終的には多数の webrtc ストリームがあり、どのストリームがノイズを発生させているかを視覚化しながら、一度に 1 つずつ聞きたいと考えています。この例のほとんどは、放送局側にこのロジックがあるようです。
hark コードは、ほとんど次のことを行います。
-始める
var audioContextType = window.AudioContext || window.webkitAudioContext;
var audioContext = new audioContextType();
var analyser = audioContext.createAnalyser();
analyser.fftSize = 512;
analyser.smoothingTimeConstant = 0.1;
var node = audioContext.createMediaStreamSource(stream);
node.connect(analyser);//plays stream
-ループ
var fftBins = new Float32Array(analyser.fftSize);
analyser.getFloatFrequencyData(fftBins);
//check fftBins for volume data
-また、icelink、サードパーティの webrtc ライブラリ、オブジェクトからストリームを取得します。ビューのビデオ コレクションは、ストリームの束から作成されます。
var remoteStream = fm.icelink.webrtc.linkExtensions.getRemoteStream(link);
var videoObject = angular.element('<video></video>');
videoObject.attr('src', window.URL.createObjectURL(remoteStream.getBackingStream()));
videoObject.attr('autoplay', 'true');
resolve(videoObject);
いくつかの視覚的インジケーターをオーバーレイして、さまざまなビデオ ストリームを再生せずにサウンド レベルを表示しようとしています。