我正在使用MediaStream Recording API在浏览器中录制麦克风的音频。我想为用户提供脉动麦克风图标的视觉反馈。类似于此,仅与麦克风的实际声音振幅相关。https://codepen.io/megwayne/pen/bWOYEj我该如何操作?
我正在录制这样的音频:
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const mediaRecorder = new MediaRecorder(stream);
const audioChunks = [];
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
1条答案
按热度按时间rt4zxlrg1#
要在JavaScript中从麦克风采样音频,可以使用Web音频API。此API允许您使用JavaScript在Web浏览器中创建和处理音频。以下是如何使用Web音频API从麦克风采样音频的示例:
此代码创建一个新的音频上下文,它是在Web音频API中管理音频的对象。然后,它创建一个来自麦克风的音频输入,并将其连接到一个筛选器节点。最后,它将筛选器节点连接到目标,在本例中是扬声器。
若要使麦克风具有动画效果,可以使用音频输入来创建正在采样的音频的视觉表示。可以使用来自音频输入的数据来实时更新动画。
要在JavaScript中创建采样音频的可视化表示,您可以使用Web音频API来分析音频数据。此API提供了许多可用于访问音频数据的方法和属性,包括
AnalyserNode
对象。此对象允许您对音频数据执行频域分析,然后您可以使用该分析来创建音频的可视化表示。以下示例说明如何使用
AnalyserNode
对象在JavaScript中创建采样音频的可视表示形式:这段代码创建了一个
AnalyserNode
对象,并使用它来分析麦克风的音频数据。然后,它创建了一个频率数据数组,并使用getByteFrequencyData
方法用当前音频数据更新它。最后,它使用这些数据在画布元素上绘制一个条形图,其中每个条形的高度对应于该时间点的音频频率。您可以使用此方法为采样音频创建各种不同的可视化效果。您还可以通过调用
getByteFrequencyData
方法并在循环中重绘可视化效果来实时更新可视化效果。