HTML5:如何以毫秒为单位获取音频标签的当前时间和持续时间

Akh*_*dar 8 javascript audio jquery html5 html5-audio

我正在使用HTML5音频标签在我的模板中播放声音文件.出于某种目的,我需要跟踪显示高达毫秒的当前时间和持续时间.现在我只能以秒为单位获取值.有没有可能的方法?以下是我的代码:

HTML
<audio controls id="track" src="<path-to-soundtrack>"
   ontimeupdate="TrackAudio(this)">
<p>Your browser does not support the audio element</p>
</audio>


JAVASCRIPT
function TrackAudio(element){
var curTime = Math.floor(element.currentTime);
console.log(curTime)   //Value in seconds.
}
Run Code Online (Sandbox Code Playgroud)

Arn*_*der 9

您可以使用:

<audio id="track" controls>
  <source src="your.mp3" type="audio/mpeg">
  <source src="your.ogg" type="audio/ogg">
</audio> 
<script type="text/javascript">
var audio = document.getElementById('track');
audio.addEventListener('timeupdate',function(){
    var currentTimeMs = audio.currentTime*1000;
    console.log(currentTimeMs);
},false);
</script>
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关timeupdate 事件精度的更多信息.它取决于浏览器的实现,因此请记住,您将从浏览器/设备获得不同的结果.

您应该使用addEventListener方法而不是ontimeupdate属性 - 它更易于维护.

此外,如果您需要浏览器覆盖率,最好同时使用ogg和mp3音频文件作为源.

  • 该答案没有说明如何获取文件的总时间。 (2认同)