我有一组在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);
我试图覆盖一些视觉指示器,以显示不同视频流的声级而不播放它们
答案 0 :(得分:1)
您不必“播放”流以将其连接到AudioContext
。只需connect
到analyser,并省略node.connect(audioCtx.destination)
即可放弃默认扬声器输出。