gpt4 book ai didi

javascript - 可视化来自远程对等连接的媒体流

转载 作者:行者123 更新时间:2023-11-29 22:07:49 25 4
gpt4 key购买 nike

几天以来,我一直在尝试可视化来自 webrtc 的音频流。我们已经编写了一些适用于普通本地流(webaudio 麦克风使用)的视觉效果。

然后我在https://github.com/muaz-khan/WebRTC-Experiment/tree/master/上发现了一些非常有趣的东西用于在不同浏览器之间流式传输麦克风输入。我们需要它为前端中的所有客户端提供来自一个后端的相同音频数据。

一切正常,一些测试表明我们可以听到对方的声音。所以我认为可视化传入流也不是问题。

但是:所有频率数据都是空的(零),即使我们可以听到对方的声音。

有人对此有解决方案或提示吗?提前致谢!

这是我分析远程频率数据的测试:

首先包含这些文件:

webrtc-experiment.com/firebase.js

webrtc-experiment.com/one-to-many-audio-broadcasting/meeting.js

        var meeting = new Meeting('test');
var audioContext = new window.webkitAudioContext();
var analyser = audioContext.createAnalyser();

// on getting local or remote streams
meeting.onaddstream = function(e) {
console.log(e.type);
console.log(e.audio);
console.log(e.stream);

if(e.type === 'local')
{
//try it with the local stream, it works!
}
else
{

var source = audioContext.createMediaStreamSource(e.stream);

source.connect(analyser);
analyser.connect(audioContext.destination);

console.log(analyser.fftSize);
console.log(analyser.frequencyBinCount);

analyser.fftSize = 64;
console.log(analyser.frequencyBinCount);

var frequencyData = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(frequencyData);

function update() {
requestAnimationFrame(update);

analyser.getByteFrequencyData(frequencyData);

console.log(frequencyData);
};

update();
}
};

meeting.check();
meeting.setup('test');

最佳答案

请注意,分析远程流应该适用于 Firefox,但已知不适用于 Chrome,请参阅 http://code.google.com/p/chromium/issues/detail?id=241543

可能的解决方法是使用 WebRTC 统计 API 获取远程音频电平值。

如果您转到 chrome://webrtc-internals/然后选择播放远程流的页面,则 ssrc_XXXX_recv 之一将包含您可以使用的动态变化的 audioOutputLevel 值。

您可以使用 Chrome PeerConnection 的统计 API 访问该值,特别是 getStats() 方法。

一个可能的缺点可能是这是用户从视频/音频元素听到的实际声音的值,因此如果用户静音或改变媒体元素的音量,它会影响 audioOutputLevel 值。

祝你好运! :-)

关于javascript - 可视化来自远程对等连接的媒体流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19950937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com