javascript - 将 <audio> currentTime 转换为准确的时间显示

标签 javascript html audio

我试图将音频的当前时间显示为小时:分钟:秒(00:00:00),而不仅仅是“秒”或“分钟和秒”。当前的代码是我所拥有的......

<audio id="audio" ontimeupdate="document.getElementById('tracktime').innerHTML = '0' + Math.floor(this.currentTime) + ' / ' + Math.floor(this.duration); " src="music.mp3"></audio>

这将在以下内容中将秒显示为 0/0...

<span id="tracktime">0 / 0</span>

我已经搜索了几个小时,但我找到的所有解决方案都毫无作用。

我什至找到了以下代码来提供帮助,但不确定如何将其实现到音频标记中的“ontimeupdate”操作中。

var minutes = '0' + Math.floor(currentTime / 60); var seconds = '0' + (currentTime - minutes * 60); var cur = minutes.substr(-2) + ':' + seconds.substr(-2);

如果可能的话,我希望它显示为两个单独的项目。就像这样...

<div id="currentTime"></div>
<div id="duration"></div>

最佳答案

这是一个示例,您可以这样做

window.addEventListener('load', function() {
  var cur = document.querySelector('#cur'),
      dur = document.querySelector('#dur')
      vid = document.querySelector('#aud')
})
    
aud.addEventListener('timeupdate', function(e) {
  cur.textContent = "Current: " + sToTime(e.target.currentTime);
  dur.textContent = "Duration: " + sToTime(e.target.duration);
})

function sToTime(t) {
  return padZero(parseInt((t / (60 * 60)) % 24)) + ":" +
         padZero(parseInt((t / (60)) % 60)) + ":" + 
         padZero(parseInt((t) % 60));
}
function padZero(v) {
  return (v < 10) ? "0" + v : v;
}
<audio id="aud" controls>
  <source src="http://techslides.com/demos/samples/sample.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>

<p id="cur"></p>
<p id="dur"></p>

关于javascript - 将 <audio> currentTime 转换为准确的时间显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41073607/

相关文章:

javascript - 如何查出李某的 parent 是谁?

javascript - 如何创建带有最小值、最大值和平均值的 Chart.JS 条形图

html - 从服务器获取图像时缓存问题

html - 填充 float 元素之间的空间

Android AudioRecord 禁用增益过滤器

java - J2me 的 FFT 示例

javascript - JS - 根据 DIV 大小调整字体大小

javascript - 如何折叠一个段落并将其余内容替换为 '...' ?

html - 我可以获取某个 ID 中每个 <p> 和 </p> 之间的所有文本吗

audio - 准备下载时播放声音