html5 audio设置currentTime


不使用audio.currentTime改变当前播放时间的原因是:当拖拽的进度条过长,没有缓存到该位置,而且,不在seekable(可搜索到的范围,分为很多部分,每部分不一定是连续的)的范围,音频会被重新加载,回到最初的位置。


audio.fastSeek(currentTime);方法,Safari浏览器支持该方法,Chrome浏览器里没有该方法,所以,使用该方法改变audio.currentTime的值之前,需要先判断fastSeek方法是否存在,即 

if('fastSeek' in audio){

audio.fastSeek(currentTime);//改变audio.currentTime的值

}

audio没有fastSeek方法时,使用audio.seekable和audio.buffered,使用audio.seekable比较安全,audio.seekable分为很多段,每部分都有start和end方法,各个段之间不一定连续,落在audio.seekable每个段audio.seekable.start(i)~audio.seekable.end(i)范围内的time都可以直接设置audio.currentTime = time;出现在该范围内的时间不会被重新加载,可直接跳至拖拽的时间,如果时间不在audio.seekable范围内,重新加载的情况也要避免的最好方法,就是接下来要讲的audio.buffered.

audio.buffered也有很多段,每段都是连续的,如果上面的情况都不满足的时候,即:既缓冲的最大时间小于当前拖拽处的时间,且不在audio.seekable的范围,此时,可以设置audio.currentTime = audio.buffered.end(audio.buffered.length-1);回到缓冲的最大位置处。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值