Lar*_*ars 3 webkitaudiocontext web-audio-api
在先前的堆栈溢出问题上,我发现了以下代码:
<script>
// this is to store a reference to the input so we can kill it later
var liveSource;
// creates an audiocontext and hooks up the audio input
function connectAudioInToSpeakers(){
var context = new webkitAudioContext();
navigator.webkitGetUserMedia({audio: true}, function(stream) {
console.log("Connected live audio input");
liveSource = context.createMediaStreamSource(stream);
liveSource.connect(context.destination);
console.log(liveSource);
});
}
// disconnects the audio input
function makeItStop(){
console.log("killing audio!");
liveSource.disconnect();
}
// run this when the page loads
connectAudioInToSpeakers();
</script>
Run Code Online (Sandbox Code Playgroud)
它从用户的麦克风获取音频并通过扬声器播放.我想要的是输入的水平(幅度)(例如,如果发生剪辑,我可以显示红色警告,或告诉用户他们需要说出来).在上面的代码中,我如何实际获取原始数据?
例如,如何将实际数字记录到控制台?我猜它都存储在liveSoure中?
我不需要任何聪明的画布动画等,只需要一个数字,告诉我输入的声音有多大.这个比较简单吗?如果是这样,它是如何完成的?
谢谢
以下是我的工作方式 - 您可以在http://labs.dinahmoe.com/dynamicmusicengine/上看到它.只需将liveSource连接到此JavaScriptNode(还有context.createScriptProcessor(4096,1,1)这是新语法,虽然两者都将得到支持,根据http://www.w3.org/2011/audio/wiki/F2F_Mar_2013)
var levelChecker = context.createJavaScriptNode(4096, 1 ,1);
liveSource.connect(levelChecker);
levelChecker.connect(context.destination);
levelChecker.onaudioprocess = function(e) {
var buffer = e.inputBuffer.getChannelData(0);
// Iterate through buffer to check if any of the values exceeds 1.
for (var i = 0; i < buffer.length; i++) {
if (1 =< buffer[i]) {
console.log("Oh noes! We got a peak.", buffer[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4013 次 |
| 最近记录: |