标签:范围 long can index 只读 音频 新建 source block
数据分析和可视化,如果你想从音频里提取时间、频率或者其它数据,你需要 AnalyserNode。
AnalyserNode 表示一个可以提供实时频率分析与时域分析的切点,这些分析数据可以用做数据分析和可视化。
let audioCtx = new AudioContext();
let analyser = audioCtx.createAnalyser(); //这里返回的是一个 AnalyserNode 对象。
source.connect(analyser); // source 连接 分析器
analyser.connect(audioCtx.destination); //之后 分析器 连接 最终目的地
AnalyserNode 赋予了节点可以提供实时频率及时间域分析的信息。它使一个 AudioNode 通过音频流不做修改的从输入到输出, 但允许你获取生成的数据, 处理它并创建音频可视化。
// 1. 设置fftSize的值,frequencyBinCount会自动是其一半(该值为 曲目频率数组的长度)
analyser.fftSize = 512;
// 2. 新建一个 utf8的数组(大小为 fftSize 的一半)
let utfArray = new Uint8Array(analyser.frequencyBinCount);
// 3. 将当前 频域数据拷贝进 Uint8Array数组
analyser.getByteFrequencyData(utfArray); // 需要循环,否则 uft数组不会变,可以利用 requestAnimationFrame
console.log(utfArray);
// 画canvas(循环下面drawCanvas,注意每次循环开始之前要先清除上一次所绘的东东)
ctx.clearRect(0, 0, 画布宽, 画布高);
drawCanvas() {
this.analyser.getByteFrequencyData(this.utfArray);
this.utfArray.forEach((value, index) => {
ctx.fillRect(位置x,位置y,方条宽,方条高);
});
}
标签:范围 long can index 只读 音频 新建 source block
原文地址:https://www.cnblogs.com/pengnima/p/12641610.html