将来自 WebRTC 的 MediaStream 与 A​​nalyserNode 结合使用

Using MediaStream from WebRTC with an AnalyserNode

AnalyserNodegetUserMediaMediaStream 完美配合。但是我无法让 Chrome 分析我从 RTCPeerConnection.onaddstream 得到的 MediaStreams。调用 .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);
};

Microphone.stream() 替换 createMediaStreamSource 的参数,这是我从 getUserMedia 获得的流,用数据填充数组。

我在 Linux 上使用 Chrome 47。

那是因为还没有实现:https://code.google.com/p/chromium/issues/detail?id=121673.