2

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);

いくつかの視覚的インジケーターをオーバーレイして、さまざまなビデオ ストリームを再生せずにサウンド レベルを表示しようとしています。

4

1 に答える 1

1

に接続するためにストリームを「再生」する必要はありませんAudioContextアナライザーにだけ接続connectし、デフォルトのスピーカー出力を省略することを省略します。node.connect(audioCtx.destination)

于 2016-12-21T18:08:43.757 に答える