javascript - 如何设置只下载部分文件的超链接?

标签 javascript html html5-audio

如果我有一个链接到另一台服务器上的 mp3 文件的超链接,当用户单击该链接时,我如何才能让浏览器仅下载该文件的前 15 秒(或其他持续时间)?是否有一个 HTML5 属性可以自动执行此操作?

最佳答案

是的,有点 - 有 Media Fragment URI 规范允许您在 URI 中指定时间范围。您可以在 URI 后附加一个片段和 t=:

#t=from,to

例如:

http://domain.to/music.mp3#t=0,10    (or just t=,10 in this case if from=0)

将从 0-10 秒加载数据。

例子

Loading... will auto-play<br>
<audio
  src="https://mp3l.jamendo.com/?trackid=912259&format=mp31#t=0,10"
  autoplay controls preload="none"></audio>

<br><br>Or click this link:<br>
<a href="https://mp3l.jamendo.com/?trackid=912259&format=mp31#t=0,10">
CTRL + Click link to play 10s of audio in a new tab...</a>

但是,这不一定会阻止浏览器加载其余的音频数据。片段只是告诉媒体​​元素在特定时间开始和停止,除了定义片段时间之外无需手动操作。

将 preload 设置为 none 可能会有帮助,但即使这样浏览器也可以加载完整文件。你可以深入研究 Media Source Extensions控制缓冲区如何加载和缓存数据,但它是一个 wide topic .

或者使用 Range header 结合片段 uri 通过 XHR 加载,但您需要提前了解有关音频文件的一系列详细信息,以便确定字节范围,例如比特率、 channel 等。

关于javascript - 如何设置只下载部分文件的超链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37582583/

相关文章:

javascript - tagName 在 IE 11 中返回带命名空间的大写名称,而 IE 7 返回不带命名空间的小写名称

javascript - 如何动态重命名列表的附加项目

php - ProcessWire foreach 循环显示每行 4 列

php - WordPress 备用帖子专栏

javascript - Safari 浏览器 audio.play() 不工作

javascript - 将 PHP 变量添加到 JQuery Post 传递的参数

javascript - Javascript 完成执行后不需要重新加载页面

html - 使社交网络图标水平

javascript - 移动端的 HTML5 可视化

javascript - 网络音频 API - 删除过滤器