javascript - 如何从Javascript中的音频元素获取音频样本?
问题描述
我想制作一个取决于音量的动画(例如,当音量更大时它会更亮,而当音量更安静时它会更暗)。我找到了一种算法来获取部分音频的音量,但我需要音频样本才能使用它。所以我有一个audio
看起来像这样的元素:
<audio preload="auto" src="my/path.mp3"></audio>
我正在使用它new Audio();
,我把它放在变量中audio
。我读过一篇文章:https ://wiki.mozilla.org/Audio_Data_API它告诉我可以使用MozAudioAvailable
,它看起来像这样:
function loadedMetadata() {
channels = audio.mozChannels;
rate = audio.mozSampleRate;
frameBufferLength = audio.mozFrameBufferLength;
fft = new FFT(frameBufferLength / channels, rate);
}
function audioAvailable(event) {
var fb = event.frameBuffer,
signal = new Float32Array(fb.length / channels),
magnitude;
for (var i = 0, fbl = frameBufferLength / 2; i < fbl; i++ ) {
signal[i] = (fb[2*i] + fb[2*i+1]) / 2;
}
}
var audio = document.getElementById('audio-element');
audio.addEventListener('MozAudioAvailable', audioAvailable, false);
audio.addEventListener('loadedmetadata', loadedMetadata, false);
所以在变量signal
中有我想要获取的样本,但看起来MozAudioAvailable
事件在 HTML 和我阅读的任何文档中都不存在。那么如何从 Audio 元素中获取音频样本呢?或者也许现在有一个别名MozAudioAvailable
?
谢谢你。
解决方案
推荐阅读
- jenkins - Jenkins 与 JMeter 集成 - 构建失败,给出 **错误:无法访问 jarfile ApacheJMeter.jar errorlevel=1**
- nestjs - NestJS Bull Log 错误到 Sentry
- python-3.x - AttributeError:“str”对象没有属性“describe”
- flutter - 扩展扩展类或如何从 BLoC 中获取代码
- python - 条件内条件熊猫
- amazon-web-services - 尝试访问 AWS 控制台上的“代码管道 - 设置”时出现错误
- laravel - 基于父级的 Laravel 急切加载约束
- excel - Powershell 运行 Excel 宏
- kotlin - 为什么这个 Kotlin 代码不打印任何东西?
- android - 反应本机 uuid [错误:不支持 crypto.getRandomValues()。见 https://github.com/uuidjs/uuid#getrandomvalues-not-supported]