gpt4 book ai didi

javascript - WEB音频API错误: Cannot read Property 'getByteFrequencyData'

转载 作者:行者123 更新时间:2023-12-03 11:17:23 24 4
gpt4 key购买 nike

我正在尝试制作一个音频栏可视化工具。

阅读 Web Audio API,我有以下代码:

HTML:

<audio controls>  
<source src="video/DownToEarth.mp3" type="audio/mp3">
</audio>
<canvas id="analyser_render"></canvas>

JavaScript:

var audioCtx, myAudio, canvas, ctx, source, analyser, bufferLength, dataArray, bars, bar_x, bar_width, bar_height;

window.addEventListener("load", initMp3Player, false);

function initMp3Player(){
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var myAudio = document.querySelector('audio');
var source = audioCtx.createMediaElementSource(myAudio);

var analyser = audioCtx.createAnalyser();
var bufferLength = analyser.frequencyBinCount;
var dataArray = new Uint8Array(bufferLength);
analyser.minDecibels = -90;
analyser.maxDecibels = -10;

var canvas = document.getElementById('analyser_render');
ctx = canvas.getContext('2d');

source.connect(analyser);
analyser.connect(audioCtx.destination);
frameLooper();
}

function frameLooper(){
window.requestAnimationFrame(frameLooper);

analyser.getByteFrequencyData(dataArray);

ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = '#00CCFF';
bars = 100;
for (var i = 0; i < bars; i++) {
bar_x = i * 3;
bar_width = 2;
bar_height = -(dataArray[i] / 2);
ctx.fillRect(bar_x, canvas.height, bar_width, bar_height);
}
}

现在一切看起来都井然有序,但每次我尝试运行它时,我都会继续收到错误:未捕获类型错误:无法读取未定义的属性“getByteFrequencyData”我有数据进入 dataArray,但 getByteFrequencyData 似乎没有从中获取任何内容。

我读自 THIS POST我可能想包含一些关于最小和最大分贝范围的行,但这并没有产生任何区别,我仍然收到此错误。

最佳答案

变量analysisr在您尝试使用它的范围内不存在,因为它是函数initMp3Player的本地变量。

您需要更改frameLooper的签名:

function frameLooper(analyser){...

当你调用它时,传递analysisr,它在你调用它的地方范围

frameLooper(analyser);

以便它在您的 frameLooper 函数中可用。

或者,您可以在更高的范围内声明analysisr...但避免全局变量可能是个好主意。

关于javascript - WEB音频API错误: Cannot read Property 'getByteFrequencyData' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282372/

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