将来自 WebRTC 的 MediaStream 与 AnalyserNode 结合使用
Using MediaStream from WebRTC with an AnalyserNode
AnalyserNode
与 getUserMedia
的 MediaStream
完美配合。但是我无法让 Chrome 分析我从 RTCPeerConnection.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);
};
用 Microphone.stream()
替换 createMediaStreamSource
的参数,这是我从 getUserMedia
获得的流,用数据填充数组。
我在 Linux 上使用 Chrome 47。
AnalyserNode
与 getUserMedia
的 MediaStream
完美配合。但是我无法让 Chrome 分析我从 RTCPeerConnection.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);
};
用 Microphone.stream()
替换 createMediaStreamSource
的参数,这是我从 getUserMedia
获得的流,用数据填充数组。
我在 Linux 上使用 Chrome 47。