HTML5 Audio currentTime属性并不总是相同

时间:2014-05-19 21:54:18

标签: javascript html5 html5-audio

我有一个来自维基百科的随机源音频元素,我将一个监听器附加到timeupdate,我把一个console.log(this.currentTime)放在上面,我总是得到不同的值,有人可以解释一下我。

HTML:

<audio id="track" src="http://upload.wikimedia.org/wikipedia/commons/a/a9/Tromboon-sample.ogg" controls preload="auto">
<p>Your browser does not support the audio element</p>
</audio>

使用Javascript:

window.onload = function(){
  var track = document.getElementById('track');

  track.ontimeupdate = function(){
    console.log(this.currentTime);
  };
};

结果:

0
0.241375
0.492853
0.743976 
0.995482

再次:

0.241815
0.49318
0.744024
0.995427 

由于

1 个答案:

答案 0 :(得分:0)

currentTime属性设置或返回音频/视频播放的当前位置(以秒为单位)。

在您的情况下 您订阅了ontimeupdate事件,而ontimeupdate则在播放音频/视频时触发。 I.E通过播放或快进来移动曲目的经过时间。

 this.currentTime 

只会告诉你它播放/经过了多少秒。

设置此属性时,播放将跳转到指定位置 当返回此属性时,它将为您提供&#34;秒&#34;音频/视频播放了多长时间 示例

设置

audioTrack.currentTime="theAmountOfSecondsThatHaveElapsed"

audioTrack=document.getElementById("track");
audioTrack.currentTime=5; //sets audioTrack to five seconds

要返回     audioTrack.currentTime

audioTrack=document.getElementById("track");
var audiotrackPosition = audioTrack.currentTime; //returns audioTrack

代码示例

function timelineEvent(start, stop, name)
{
     this.start = start;
     this.stop = stop;
     this.name = name;
}

var eventArr = new Array();
eventArr.push(new timelineEvent(10,20, "Drums starting"));
eventArr.push(new timelineEvent(25,27,"Pitch goes down"));

for(var i = 0; i < eventArr.length; i++)
{

     console.log("Event -- " + eventArr[i].name + " --");
     console.log("Event starts @ " + eventArr[i].start);
     console.log("Event stops @ " + eventArr[i].stop);  
}

如果你想操纵它给你的数字,你可能会使用另一个解决方案!

math.floor(audioTrack.currentTime);