在播放时预加载html5音频

时间:2010-11-09 20:28:15

标签: html5 audio

对于HTML5音频,假设您有一个要播放的两首歌曲的列表。目前我已将其设置为当当前歌曲停止播放时,它会加载新歌并播放。我想拥有它以便在当前歌曲结束时加载下一首歌曲,可能在当前歌曲结束前20秒。我试图在播放歌曲时更改音频对象的src属性,但这会立即停止播放当前歌曲。有没有其他方法可以让我在播放当前歌曲时预加载下一首歌?

2 个答案:

答案 0 :(得分:3)

您可以使用jQuery创建jQuery对象:

var nextSong = document.createElement('audio'); //Creates <audio></audio>
nextSong = $(nextSong); //Converts it to a jQuery object
$(nextSong).attr('autoplay') = false; //You don't want this dynamically loaded audio to start playing automatically
$(nextSong).attr('preload') = "auto"; //Make sure it starts loading the file
$(nextSong).attr('src') = url_to_src; //Loads the src

这应该开始将歌曲加载到浏览器内存中的元素中,当歌曲结束时,请调用以下内容:

$(audio).replace(nextSong);

未经测试。你可能甚至不需要jQuery。

这可以在没有jQuery的情况下工作:

var nextSong = document.createElement('audio');
nextSong.autoplay = 'false';
nextSong.preload = 'auto';
nextSong.src = url_to_src;

给它一个旋转,让我知道!

答案 1 :(得分:1)

这可能不合适,但你试过调用元素的load()方法吗?

http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#loading-the-media-resource

修改

啊,我想我误解了这个问题。你想在同一个媒体元素中背靠背播放两首歌曲吗?我不确定它是多么可行......将每首歌放在自己的音频元素中可能更容易。如果您担心灵活性,可以随时动态生成这些内容。