0

我有一个页面上有很多音频元素的情况,其中一些很长(最多约 2 小时)。本质上,它们是这样创建和控制的:

var a = new Audio();
a.preload = 'metadata';
a.src = 'long-track.mp3';

a.play();

播放时,浏览器(在本例中为 Chrome)正确地发出范围请求,服务器返回“206 Partial Content”,一次看起来大约 2 分钟的数据。加载约 2mb 的数据后,它会停止请求数据。到目前为止,一切都很好。然后,执行:

a.pause();

这会导致浏览器下载文件的整个剩余部分。(!!?!~@!!!?) 显然,如果用户决定收听几首曲目的前几秒钟,这可能是个问题:他们会开始下载千兆字节的不需要的数据。

我已经看到其他一些问题,询问如何强制缓冲完整文件,但我实际上想要完全相反。

4

1 回答 1

2

没有官方功能可以做到这一点,虽然应该有,但似乎普遍的共识是,以下代码是做你想做的最好的方法

a.src = '';
a.load();

jPlayer实现了这个方法来停止音频缓冲。唯一的问题是,这种方法可能存在跨浏览器问题。如果失败,您可以尝试从页面中删除音频元素,您尝试过吗?

于 2012-04-11T11:03:32.120 回答