【问题标题】:Can you get the volume of a webrtc audio stream without playing it?你能在不播放的情况下获得 webrtc 音频流的音量吗?
【发布时间】:2017-01-03 22:24:08
【问题描述】:

我有一堆 webrtc 流在 angularjs 视图中表示,我想可视化哪些流超过了一定的音量阈值,然后我可以一次收听那些流。这可能吗?我发现的所有内容似乎都要求您将流附加到您的音频上下文以计算音量。这会播放流。您可以在不播放流的情况下计算音量吗?我一直在使用 hark.js 进行音量阈值检测。

我的流是从第 3 部分 rtc 库派生的,但最终我有一堆 webrtc 流,我想一次听一个,同时可视化哪些流在制造噪音。大多数这样的例子似乎在广播公司方面都有这种逻辑。

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、3rd 方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);

我正在尝试叠加一些视觉指示器以显示不同视频流的声音级别而不播放它们

【问题讨论】:

    标签: javascript audio webrtc mediastream


    【解决方案1】:

    您无需“播放”流即可将其连接到AudioContext。只需将connect 改为analyser,省略node.connect(audioCtx.destination) 即可放弃默认扬声器输出。

    【讨论】:

    • 你能在window.AudioContext之外创建一个分析器吗?我正在使用连接到分析仪的 hark,但此时在扬声器上播放
    • @jumpdart 不确定你的意思。分析仪wfm 无扬声器输出。
    • 麦克风似乎没问题。可能是我的 rtc 库的问题。将第三方 webrtc 对象的流作为标准媒体流,但遇到问题
    • 就像我想的那样,因为我将流绑定到一堆视频元素。我只想一次将音频播放到一个流,同时将所有音频可视化,但我认为我将它们附加到视频元素的事实让我搞砸了。
    • 我不得不克隆流来分析它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多