use*_*407 16 javascript audio microphone webrtc getusermedia
我想了解如何最好地获取MediaStreamTrack
Chrome/Canary中音频javascript对象的麦克风活动级别.该MediaStreamTrack
对象是MediaStream
返回的音轨getUserMedia
,作为WebRTC javascript API的一部分.
小智 19
When microphone has audio the green bar up and down very nice:
<script type="text/javascript">
navigator.webkitGetUserMedia({audio:true, video:true}, function(stream){
// audioContext = new webkitAudioContext(); deprecated OLD!!
audioContext = new AudioContext(); // NEW!!
analyser = audioContext.createAnalyser();
microphone = audioContext.createMediaStreamSource(stream);
javascriptNode = audioContext.createJavaScriptNode(2048, 1, 1);
analyser.smoothingTimeConstant = 0.3;
analyser.fftSize = 1024;
microphone.connect(analyser);
analyser.connect(javascriptNode);
javascriptNode.connect(audioContext.destination);
//canvasContext = $("#canvas")[0].getContext("2d");
canvasContext = document.getElementById("test");
canvasContext= canvasContext.getContext("2d");
javascriptNode.onaudioprocess = function() {
var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);
var values = 0;
var length = array.length;
for (var i = 0; i < length; i++) {
values += array[i];
}
var average = values / length;
canvasContext.clearRect(0, 0, 60, 130);
canvasContext.fillStyle = '#00ff00';
canvasContext.fillRect(0,130-average,25,130);
}
}
);
</script>
<canvas id="test" style="background-color: black;"></canvas>
Run Code Online (Sandbox Code Playgroud)
你在寻找什么是webkitAudioContext
它的createMediaStreamSource
方法.
这是一个代码示例,它绘制绿色条,就像VU表一样:
navigator.webkitGetUserMedia({audio:true, video:true}, function(stream){
audioContext = new webkitAudioContext();
analyser = audioContext.createAnalyser();
microphone = audioContext.createMediaStreamSource(stream);
javascriptNode = audioContext.createJavaScriptNode(2048, 1, 1);
analyser.smoothingTimeConstant = 0.3;
analyser.fftSize = 1024;
microphone.connect(analyser);
analyser.connect(javascriptNode);
javascriptNode.connect(audioContext.destination);
canvasContext = $("#canvas")[0].getContext("2d");
javascriptNode.onaudioprocess = function() {
var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);
var values = 0;
var length = array.length;
for (var i = 0; i < length; i++) {
values += array[i];
}
var average = values / length;
canvasContext.clearRect(0, 0, 60, 130);
canvasContext.fillStyle = '#00ff00';
canvasContext.fillRect(0,130-average,25,130);
}
}
Run Code Online (Sandbox Code Playgroud)
更新:使用以下方式修改代码:
navigator.mediaDevices.getUserMedia(constraints).then(
function(stream){
// code ...
}).catch(function(err) {
// code ...
});
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴:https ://jsfiddle.net/elshnkhll/p07e5vcq/
归档时间: |
|
查看次数: |
9486 次 |
最近记录: |