Html 将WebRTC中的MediaStream与AnalyzerNode一起使用

Html 将WebRTC中的MediaStream与AnalyzerNode一起使用,html,google-chrome,webrtc,web-audio-api,Html,Google Chrome,Webrtc,Web Audio Api,AnalyserNodes与getUserMedia的MediaStreams完美配合。但是我无法让Chrome分析我从rtpeerconnection.onaddstream获得的MediaStreams。调用.getByteFrequencyData将创建一个零数组: pc.onaddstream = function(evt) { var conn = _conns[user]; conn.audio = $('<audio>', { src:

AnalyserNode
s与
getUserMedia
MediaStream
s完美配合。但是我无法让Chrome分析我从
rtpeerconnection.onaddstream
获得的
MediaStream
s。调用
.getByteFrequencyData
将创建一个零数组:

pc.onaddstream = function(evt) {
    var conn = _conns[user];
    conn.audio = $('<audio>', {
        src: URL.createObjectURL(evt.stream),
        autoplay: true
    });

    conn.context = Microphone.context();
    conn.sourceNode = conn.context.createMediaStreamSource(evt.stream);
    conn.analyserNode = conn.context.createAnalyser();
    conn.sourceNode.connect(conn.analyserNode);

    conn.analyserInterval = setInterval(function() {
        var bufferLength = conn.analyserNode.frequencyBinCount;
        var dataArray = new Uint8Array(bufferLength);
        conn.analyserNode.getByteFrequencyData(dataArray);
        console.log(dataArray);
    }, 50);
};
pc.onaddstream=函数(evt){
变量连接=_连接[用户];
连接音频=$(''{
src:URL.createObjectURL(evt.stream),
自动播放:对
});
conn.context=麦克风.context();
conn.sourceNode=conn.context.createMediaStreamSource(evt.stream);
conn.analyserNode=conn.context.createAnalyzer();
conn.sourceNode.connect(conn.analyserNode);
conn.analyserInterval=setInterval(函数(){
var bufferLength=conn.AnalyzerNode.frequencyBinCount;
var DATARRAY=新的Uint8Array(缓冲区长度);
conn.AnalyzerNode.getByteFrequencyData(数据阵列);
log(数据数组);
}, 50);
};
createMediaStreamSource
的参数替换为
micromic.stream()
,这是我从
getUserMedia
获得的流,用数据填充数组


我在Linux上使用Chrome 47。

这是因为它还没有实现:。

好的,那么Firefox呢?它可以工作,但请确保在某个地方保留对您的
PeerConnection
流的引用,否则我们有一个错误,它被垃圾收集得太早了。