你可以在不播放的情况下获得webrtc音频流的音量吗?

时间:2016-12-21 16:05:23

标签: javascript audio webrtc mediastream

我有一组在angularjs视图中表示的webrtc流,我希望可视化哪些超过某个音量阈值,然后我可以一次一个地听这些。这可能吗?我找到的所有内容似乎都要求您将流附加到audiocontext以计算音量。这就是流。你可以在不播放流的情况下计算音量吗?我一直在玩hark.js进行音量阈值检测。

我的流源自第三部分rtc库,但最终我有一堆webrtc流,并希望一次听一个,同时可视化哪些正在制造噪音。大多数这方面的例子似乎在广播公司方面都有这种逻辑。

hark代码几乎可以做到以下几点:

-start

    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

-loop

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

我试图覆盖一些视觉指示器,以显示不同视频流的声级而不播放它们

1 个答案:

答案 0 :(得分:1)

您不必“播放”流以将其连接到AudioContext。只需connectanalyser,并省略node.connect(audioCtx.destination)即可放弃默认扬声器输出。