3

当您使用 Chrome 中的音频元素播放音频时,您会遇到烦人的咔嗒声和破裂声。至少在我的 64 位 Linux 安装下,即使在我格式化并安装了新的 Fedora 版本之后也是如此。(Firefox 和 Opera 都很好,甚至是 VirtualBox Windows 7 中的 IE9。)

但是使用 Web Audio API 而不是音频元素的演示具有完美的声音。所以我想知道我是否可以像音频元素一样使用 Web Audio API?但是有些事情你似乎无法用这个 API 做。还是我错过了什么?我在哪里找不到的东西:

  • 在文件完全加载之前开始播放文件
  • 获取缓冲区进度更新(取决于上一点)
  • 获取播放进度更新
  • 寻求

有没有办法使用 Web Audio API 做到这一点?

这是我会使用它的地方:http: //tinyurl.com/magnatune-player

4

3 回答 3

0

我认为你至少应该仍然使用<audio>流媒体。MediaElementAudioSourceNode如果您愿意,可以将其视为网络音频:

var mediaSourceNode = context.createMediaElementSource(audioElement);

AFAIK,没有办法直接流式传输网络音频。事实上,网络音频 api 建议您不要:

4.9. 音频缓冲区接口

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

于 2013-06-28T03:32:34.520 回答
0

除非您使用 a MediaElementAudioSourceNode(我假设您会遇到与您遇到的相同问题,因为它只是使用<audio>标签)AFAIK,您的问题的答案是:

  • 在文件完全加载之前开始播放文件:否。
  • 获取缓冲区进度更新(取决于上一点):可能(您可以检查 XHR 上的进度事件)
  • 获得播放进度更新:否。
  • 寻求:没有。
于 2013-06-28T03:58:06.000 回答
0

与此同时,Chrome 修复了音频播放问题。所以我不再需要任何解决方法了。

于 2013-06-28T14:10:18.350 回答