鉴于是一款简单干净的HTML5音频播放器。为了使持续时间有效,必须在此代码中省略preload="none"
,这违背了拥有一个微型音频播放器的全部目的!
我想要的是:等待并且不加载mp3文件(节省数兆字节的其他浪费的数据)除非并且直到用户点击播放!然后,只有当mp3加载并播放时,才会显示持续时间信息。怎么做到这一点?
换句话说:只要没有人点击PLAY,就不应该从服务器加载数据,持续时间只是00:00。谢谢!
/* BAD: Loads mp3 file, even of nobody clicks play!
GOOD: Shows duration time correctly. */
<audio src="http://labs.qnimate.com/files/mp3.mp3" type="audio/mpeg"></audio>
/* BAD: Doesn't show the duration time!
GOOD: Doesnt load the mp3 file unless user clicks play. */
<audio src="http://labs.qnimate.com/files/mp3.mp3" type="audio/mpeg" preload="none"></audio>
https://jsfiddle.net/xt5c0whx/10/
为了清晰起见,总结了不同的状态:
•网页加载,但10兆字节的mp3还没有加载。持续时间显示为“00:00”
•如果用户单击播放,则加载,播放mp3并且持续时间显示音频长度时间
答案 0 :(得分:1)
为了仅检索长度,您应该预加载元数据(当然首先确保有关文件的元数据)。但这只会加载长度细节而不是实际文件
<audio src="http://labs.qnimate.com/files/mp3.mp3" preload="metadata" type="audio/mpeg"></audio>
预加载
此枚举属性旨在为浏览器提供提示 关于作者认为会带来最佳用户体验的内容。它 可能具有以下值之一:none:表示音频 不应预先加载; 元数据:表示只有音频元数据 (例如,长度)被提取; auto:表示整个音频文件 可以下载,即使用户不希望使用它;该 空字符串:自动值的同义词。如果未设置,则为其默认值 是浏览器定义的(即每个浏览器可能有自己的默认值)。 规范建议将其设置为元数据。
希望这有帮助