预加载音频文件

Posted

技术标签:

【中文标题】预加载音频文件【英文标题】:preloading audio files 【发布时间】:2011-11-16 06:36:35 【问题描述】:

我想在我的网站中。我在 html 页面中使用以下代码。

<embed src="cheer.swf" hidden="true" autostart=false style="height:0px; width:0px"> 
<embed src="click.swf" hidden="true" autostart=false style="height:0px; width:0px"> 
<embed src="doowip.swf" hidden="true" autostart=false style="height:0px; width:0px">

但是所有的音频文件仍然在页面的开头播放。如何停止音频文件的自动播放。

另外,如何为 ipad safari 预加载文件?

<audio id="genclick" src="click.wav" type="audio/wav" >
<audio src="doowip.wav" type="audio/wav" >
<audio src="cheer.wav" type="audio/wav" >

在我从 javascript 播放之前,上面的代码不会加载文件..

document.getElementById("genclick").play();

我哪里错了??

【问题讨论】:

【参考方案1】:

根据http://kb2.adobe.com/cps/127/tn_12701.html,您正在寻找的参数名称(对于 swf 的“嵌入”标签)是“播放”,而不是“自动启动”。因此,将它们更改为:

<embed src="cheer.swf" hidden="true" play="false" style="height:0px; width:0px" />

您也可以将它们放在object 标签中,然后使用:

<param name="play" value="false" />

我自己对此进行了测试,它确实有效。至于 iPad Safari 的标签,HTML5 音频标签有一个名为“preload”的属性,当设置为“auto”时,它应该根据需要预加载文件。试试:

<audio src="doowip.wav" type="audio/wav" preload="auto" />

我希望这会有所帮助。

【讨论】:

感谢您的回答。请阅读上述对 TeaTang 回答的评论。如何将音频文件存储在 ipad safari 缓存中,以便快速流畅地播放?? 您正在测试的 iPad 是否使用 3g 连接而不是 WiFi?因为根据this 文档,ios Safari 在使用蜂窝网络时会禁用 autoplaypreload 属性......在这种情况下,在那种情况下,你看起来像这里真的受苹果的摆布。 我正在使用 WiFi 连接!!【参考方案2】:

虽然还没有检查,但是您可以通过以下方式预加载文件吗:

【讨论】:

有什么区别??我没有发现任何变化,它们仍然是自动播放的【参考方案3】:

对于 HTML5 音频标签,自动播放是一个布尔值:

<audio controls="controls" autoplay="autoplay">
  <source src="song.ogg" type="audio/ogg" />
  <source src="song.mp3" type="audio/mpeg" />
  Your browser does not support the audio element.
</audio>

对于 swf 文件,您应该检查每个文件中的自动播放属性是否设置为硬编码。

【讨论】:

我不想自动播放音频,我希望它们被预加载和缓存.. 这样我就可以在我想要的时候播放它们。但是我观察到的是,ipad safari 每次 document.getElementById("genclick").play(); 时都会下载音频文件的新副本。在同一页面中执行。

以上是关于预加载音频文件的主要内容,如果未能解决你的问题,请参考以下文章

预加载音频文件

javascript中的完整预加载音频

如何在 HTML 5 中为音频、视频、css、图像创建预加载器?

在移动设备上预加载音频

用于预加载整个流的 Html 音频标签

预加载音频并在播放期间应用 css