【发布时间】:2014-10-17 13:12:09
【问题描述】:
我正在使用 HTML5 <audio> 标记,我注意到一些与 currentTime 属性有关的奇怪行为。
我想播放一个本地音频文件,并通过比较 currentTime 属性和 duration 属性让 timeupdate 事件检测它何时结束。
如果我让歌曲从头到尾播放,这实际上效果很好 - 歌曲的结尾是正确确定的。
但是,手动更改 currentTime(直接通过 JavaScript 或使用基于浏览器的音频控件)会导致 API 不再返回 currentTime 的正确值,但似乎提前几秒钟设置它实际发挥的位置。
(前面的“几秒钟”基于 Chrome,Firefox 似乎完全发疯了,这导致差异更大。)
关于这个问题的一个小 jsFiddle 例子:http://jsfiddle.net/yp3o8cyw/2/
谁能告诉我为什么会发生这种情况 - 还是我没有正确理解 API 应该做什么?
P.S.:我刚刚注意到这实际上只发生在 MP3 编码文件中,OGG 文件完全正常。
【问题讨论】:
-
我正在解决这个确切的问题。我只遇到过“长”mp3 的问题,当向前和向后跳过时,currentTime 属性越长,越不可靠。这对我来说是一个真正的问题。你曾经用 mp3 解决过这个问题吗?
-
正如接受答案下方的评论中所述:您可以使用替代 JavaScript 技术来解码 MP3 文件,而不是依赖 HTML5 音频。 Aurora.js 对我来说做得很好。 (github.com/audiocogs/aurora.js)
-
谢谢 Loilo,我去看看极光。
标签: javascript html audio mp3 html5-audio