html5 display audio currentTime
Solution 1
Here's an example:
<audio id="track" src="http://upload.wikimedia.org/wikipedia/commons/a/a9/Tromboon-sample.ogg"
ontimeupdate="document.getElementById('tracktime').innerHTML = Math.floor(this.currentTime) + ' / ' + Math.floor(this.duration);">
<p>Your browser does not support the audio element</p>
</audio>
<span id="tracktime">0 / 0</span>
<button onclick="document.getElementById('track').play();">Play</button>
This should work in Firefox and Chrome, for other browsers you'll probably need to add alternative encodings.
Solution 2
here is simple usage. keep in mind html5 elements are still in the works so anything can change:
audio = document.getElementsByTagName("audio")[0];
//functions
audio.load();
audio.play();
audio.pause();
//properties
audio.currentSrc
audio.currentTime
audio.duration
here is the reference HTML5 Audio
to get the currentTime while audio is playing you must attach the timeupdate
event and update your current time within the callback function.
simple tutorial audio/video html5 on dev.opera
Solution 3
robertc's version will work fine except for the fact that it does not turn the number of seconds you get from math.floor()
into proper time values.
Here is my function called when ontimeupdate
is called:
<audio id='audioTrack' ontimeupdate='updateTrackTime(this);'>
Audio tag not supported in this browser</audio>
<script>
function updateTrackTime(track){
var currTimeDiv = document.getElementById('currentTime');
var durationDiv = document.getElementById('duration');
var currTime = Math.floor(track.currentTime).toString();
var duration = Math.floor(track.duration).toString();
currTimeDiv.innerHTML = formatSecondsAsTime(currTime);
if (isNaN(duration)){
durationDiv.innerHTML = '00:00';
}
else{
durationDiv.innerHTML = formatSecondsAsTime(duration);
}
}
</script>
I modified formatSecondsAsTime()
from something I found here:
function formatSecondsAsTime(secs, format) {
var hr = Math.floor(secs / 3600);
var min = Math.floor((secs - (hr * 3600))/60);
var sec = Math.floor(secs - (hr * 3600) - (min * 60));
if (min < 10){
min = "0" + min;
}
if (sec < 10){
sec = "0" + sec;
}
return min + ':' + sec;
}
Solution 4
ES6
const audio = new Audio();
audio.src = document.querySelector('#audio').src;
audio.play();
audio.addEventListener('timeupdate', (event) => {
const currentTime = Math.floor(audio.currentTime);
const duration = Math.floor(audio.duration);
}, false);
Solution 5
When you use audio.duration(). It will give you result in seconds. You just have to change this in minutes and seconds. Demo of Code is here, hope it will help you.
song.addEventListener('timeupdate',function (){
var duration = song.duration; //song is object of audio. song= new Audio();
var sec= new Number();
var min= new Number();
sec = Math.floor( duration );
min = Math.floor( sec / 60 );
min = min >= 10 ? min : '0' + min;
sec = Math.floor( sec % 60 );
sec = sec >= 10 ? sec : '0' + sec;
$("#total_duration").html(min + ":"+ sec); //Id where i have to print the total duration of song.
});
This code will definitely work for total duration. To get current Time, you just have to use song.currentTime;
in place of song.duration;
Whole code will remain same.
Comments
-
Lenny Magico over 2 years
I would like to display the current time of of an html 5 audio element and the duration of that element. I've been looking over the internet but can't find a functional script which allows me to display how long the audio files is and what the time currently is e.g. 1:35 / 3:20.
Any one got any ideas :)?
-
clamchoda over 13 yearsDon't you love how your answers not correct unless you write the code the OP wants? Good answer.
-
KJYe.Name over 13 yearsi don't want to tinker with html5 until its official. too many browsers to debug lol =D thanks mate.
-
Lenny Magico over 13 yearsI'm not saying his answer is wrong, I just don't understand JS and html 5 audio is new to me so I didn't quite understand what to do with this :)
-
Atharva Johri over 10 yearsi am unable to bind
ontimeupdate
in my js.. how can i do that? -
yourkishore over 10 yearsatharva johri just use a function in ontimeupdate and do your stuff in that function.
-
Jared Dunham over 8 yearsIt takes awhile for someone to easily put all of these different components together. I know when I was starting out, showing just this wouldn't have helped me understand how the code can be written.
-
user1788736 over 6 yearsis there a way to make this code work for blob URL to play mp3?
-
Andri about 5 yearsYes! Thank you very much. This is the only answer that worked for me :)
-
vinita almost 5 years@anuj-sharma can you pls help me with this one --> stackoverflow.com/questions/56765496/…
-
7uc1f3r almost 4 yearsThis question already contains multiple answers and an accepted answer. Can you explain (by editing your answer) where your answer differs from the other answers? Also know that Code-only answers are not useful in the long run.
-
TK421 about 3 yearsWas looking for an answer that was js only, and did not utilize the dom. thanks for posting this!