gpt4 book ai didi

javascript - Recorder.js 单个数据点

转载 作者:行者123 更新时间:2023-11-30 18:16:08 26 4
gpt4 key购买 nike

我正在使用 jwegener's recorder.js用于录音。我很好奇是否可以在录音机运行时从 javascript 中轮询 flash 以获取音频“帧”以构建波形。

在我想象的伪代码中:

function record() {
Recorder.Record();

setInterval(function(){
Recorder.fetchCurrentAudioSnapshot();
}, 50);
}

理想情况下,这会给我一个数值,我可以用它来绘制波形。

感谢您提供的任何想法。

最佳答案

我想通了。

我做的第一件事是将示例 javascript 放入一个对象中。这是我正在使用的记录功能:

record: function() {
this.data = [];
this.poll = '';

Recorder.record({
start: function () {
alert("recording starts now. press stop when youre done. and then play or upload if you want.");
},
progress: function (milliseconds) {
document.getElementById("time").innerHTML = Voiceover.timecode(milliseconds);
}
});

this.waveform = new Waveform({
container: document.getElementById("voiceover_waveform"),
interpolate: false
});
var ctx = this.waveform.context;

var gradient = ctx.createLinearGradient(0, 0, 0, this.waveform.height);
gradient.addColorStop(0.0, "#f60");
gradient.addColorStop(1.0, "#ff1b00");
this.waveform.innerColor = gradient;

var i=0;

this.poll = setInterval(function() {
Voiceover.data.push(Recorder.PollAudioBuffer());
Voiceover.waveform.update({
data: Voiceover.data
});
}, 70);
},

这将初始化波形并设置 70 毫秒的间隔以轮询记录器以获取新数据点并将其绘制在波形上。

recorder.js中,我添加了以下函数:

PollAudioBuffer: function() {
try {
var poll = this.flashInterface().pollAudioBuffer();

console.log(poll);

if(poll < 0.15) {
// Messing around with the math a bit to improve the effect.
// The final result just has to be between 0 and 1.
poll = Math.floor((Math.random()*1.5)+1)/10;
}

return poll;
}
catch(error) {
console.log(error);
}
},

现在到 ActionScript 。在 Recorder.as 中,我添加了我的 pollAudioBuffer() 函数,现在它实际上有点命名错误。

protected function pollAudioBuffer():Number
{
return (microphone.activityLevel*2)/100;
}

要使函数正常工作,您需要在 Recorder.as 中添加对 addExternalInterfaceCallbacks() 的回调引用:

ExternalInterface.addCallback("pollAudioBuffer",this.pollAudioBuffer);

这些更改使我能够即时创建波形。希望这会对其他人有所帮助。

关于javascript - Recorder.js 单个数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com