gpt4 book ai didi

javascript - AudioBuffer 不可缓存/decodeAudioData 需要很长时间

转载 作者:行者123 更新时间:2023-11-30 09:30:58 24 4
gpt4 key购买 nike

我正在尝试使用 Web Audio Api 为音乐编写自定义网络播放器,但我在解码音频时遇到了问题。

我正在使用 AudioContext.decodeAudioData 函数从后端获取 .mp3 作为 ArrayBuffer 并对其进行解码。

  const resp = await fetch(url);
const raw = await resp.arrayBuffer();
const audioBuffer = context.decodeAudioData(raw);

我正在尝试将 AudioBuffer 缓存在 IndexedDB 中,但它不可克隆。在我的设备上使用普通 mp3 进行解码大约需要 10 秒,那是相当长的时间。我是否有任何其他选择来防止歌曲之间的等待时间过长(除了预取和“预解码”)?

最佳答案

AudioBuffer 不适用于大段音频

This interface represents a memory-resident audio asset (for one-shot sounds and other short audio clips). Its format is non-interleaved IEEE 32-bit linear PCM with a nominal range of -1 -> +1. It can contain one or more channels. Typically, it would be expected that the length of the PCM data would be fairly short (usually somewhat less than a minute). For longer sounds, such as music soundtracks, streaming should be used with the audio element and MediaElementAudioSourceNode.

(强调我的)

https://www.w3.org/TR/webaudio/#AudioBuffer

您可能想查看 MediaElementAudioSourceNode如果您确实需要即时操作音频。否则一个简单的音频元素就足够了。

关于javascript - AudioBuffer 不可缓存/decodeAudioData 需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46327268/

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