HTML5音频:设置currentTime然后在iPhone上播放会自动回复50-100毫秒

时间:2016-12-14 03:51:47

标签: iphone html5 audio html5-audio

我尝试播放文件中特定位置的音频,同时还使用onTimeUpdate事件接收播放更新。我检查onTimeUpdate处理程序中的currentTime属性,以便我可以提供关于文件中的位置的可视反馈。

我的问题是,当我将currentTime设置为已知值然后调用play()时,我第一次在onTimeUpdate处理程序中获取currentTime属性时,它就像我设置它一样。但是下次调用onTimeUpdate时,它实际上比我最初开始播放时的值,有时超过100毫秒!

例如:

player.currentTime = 2.0;
player.play();

然后,从我的onTimeUpdate处理程序中输出player.currentTime:

2
1.95 // WTF??
2.24
2.56
...

问题是这会导致我的UI小部件指示轨道中的当前位置跳转。我有一个笨重的解决方法,我正在实施,但我想知道是否有任何已知的方法来阻止这种情况发生,或者我是否只是没有做正确的事情。

据我所知,它只发生在iPhone上。我正在使用iPhone 6和iOS 10.1.1进行测试。

如果您想亲眼看到这一点,请在此进行演示。

http://codepen.io/brianrak/pen/7db413c4431827fe3318e99ae497cf2a?editors=1010

提前致谢!

1 个答案:

答案 0 :(得分:0)

var second = ("0" + parseInt(player.currentTime % 60)).slice(-2);
var minutes = ("0" + parseInt((player.currentTime / 60) % 60)).slice(-2);