做html5音频标签吃掉了资源

时间:2011-05-17 15:40:23

标签: html5 audio

我有页面,当用户点击某些内容时,我需要播放几十个小音频文件。反应非常重要。

我正在考虑为每个文件使用一个,并预加载音频文件。这是一种合理的方法吗?

感谢。

3 个答案:

答案 0 :(得分:2)

这是合理的,也许是正确的解决方案。我最近编写了一个演示应用程序(http://www.soundscribe.com),它大量使用HTML5中的个别(和同步)音频剪辑。 IE9和FF3 / 4处理得很好。 Chrome有一些问题似乎与同步播放特别相关(可能不适用于您的应用)。我遇到的最大块是IE9,它似乎对可以同时存在的音频对象的数量有一个神秘的限制。最大值约为40,之后IE9将无法下载文件。 FF和Chrome都试图支持无限数量。

将所有音频放在一个文件中并更改要播放的偏移量的替代方法有几个原因,这是一个糟糕的选择。代码要复杂得多,你需要跟上额外的元数据(剪辑从哪里开始,有多长时间),并且浏览器之间的工作可能略有不同。最糟糕的是,实际上没有办法知道剪辑何时满载。您只能判断剪辑“可以播放”的时间,这是由浏览器根据音频文件的大小和当前下载速率确定的。这意味着即使在浏览器报告音频剪辑准备就绪后,您也可能无法在接近结尾处播放剪辑。

答案 1 :(得分:2)

我使用SoundManager2(音频Javascript lib)的经验是Chrome和Firefox在通过Html5功能加载和播放多个(100+)声音方面没有问题 (但Firefox必须玩OGG)

使用IE9,这是一个不同的故事。看起来它有一个限制加载和播放不超过40个声音。 : - (

因为,我们开发的游戏需要不断在1分钟内播放50多个声音,我们必须回退到Flash才能在IE9上播放声音。幸运的是SM2也是这样做的

我还使用jPlayer以html5模式确认此行为。我只能创建40个jPlayer实例。每个都可以预加载和播放它定义的声音。 第41个及以下实例将在IE9 / Windows7上出现错误

错误:“无法加载媒体网址”

答案 2 :(得分:0)

这似乎是一种合理的方法。但是你需要考虑几件事。

  • 每个声音片段都需要保存在内存中。虽然这对大多数情况都无关紧要,但是打开了很多标签的用户,打开了多个程序或者计算机上的旧计算机可能会变慢。特别是如果声音文件很大。
  • 从可用性的角度来看,如果我每次点击网站上的按钮都听到声音,我会马上离开