4

完整的问题:为什么更长的声音使用 aMediaElementAudioSourceNode 而不是 anAudioBuffer更合适?

来自 MDN

这些类型的对象旨在保存小的音频片段,通常小于 45 秒。对于更长的声音,实现 MediaElementAudioSourceNode 的对象更合适。

从规范

此接口表示内存驻留的音频资产(用于一次性声音和其他短音频剪辑)。它的格式是非交错的 32 位线性浮点 PCM 值,正常范围为 [-1,1][-1,1],但值不限于此范围。它可以包含一个或多个通道。通常,预计 PCM 数据的长度会相当短(通常略少于一分钟)。对于较长的声音,例如音乐音轨,应将流式传输与音频元素和 MediaElementAudioSourceNode 一起使用。

  1. 使用MediaElementAudioSourceNodeover of an 有什么好处AudioBuffer
  2. MediaElementAudioSourceNode 短片使用 a 有什么缺点吗?
4

1 回答 1

4
  1. MediaElementSourceNode 具有流式传输的潜在能力 - 并且肯定会在整个声音文件下载和解码之前开始播放。它还能够做到这一点,而无需将声音文件转换(可能扩展!)为 32 位线性 PCM(CD 质量的音频每通道只有 16 位)并转码为输出设备的采样率。例如,以 16 位、16kHz 录制的 1 分钟播客本身的大小将略低于 2 兆字节;如果您在 48kHz 设备上播放(并不少见),转码为 32 位 48kHz 意味着您使用了将近 12 兆字节作为 AudioBuffer。

  2. MediaElementSourceNode 不会为您提供精确的播放时间,或管理/播放大量同时声音的能力。对于您的用例来说,精度可能是合理的,但它不会像 AudioBuffer 那样具有采样精度。

于 2017-03-01T00:15:23.540 回答