为什么更适合使用MediaElementAudioSourceNode来获得更长的声音?

时间:2017-02-28 23:43:55

标签: javascript web-audio mediaelement web-audio-api audiobuffer

完整问题:为什么使用MediaElementAudioSourceNode 而不是AudioBuffer 来获得更长的声音更合适?

From MDN

  

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

From the specification

  

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

  1. 使用MediaElementAudioSourceNodeAudioBuffer
  2. 有什么好处?
  3. 使用MediaElementAudioSourceNode短片时是否有任何缺点?

1 个答案:

答案 0 :(得分:3)

  1. MediaElementSourceNode具有潜在的流式传输功能 - 当然也可以在整个声音文件下载和解码之前开始播放。它还能够在不将声音文件转换(可能扩展!)到32位线性PCM(CD质量音频仅为每通道16位)并转码为输出设备采样率的情况下执行此操作。例如,以16位,16kHz录制的1分钟播客本身大小不到2兆字节;如果你正在48kHz设备上播放(并非罕见),转码为32位48kHz意味着你将使用近12兆字节作为AudioBuffer。

  2. MediaElementSourceNode不会为您提供精确的播放时间,也无法管理/播放大量同步声音。对于您的用例,精度可能是合理的,但它不会像AudioBuffer那样具有样本精确的时序。

相关问题