Get HTML5 Video Duration
HTML5 video is exciting, if only for the reason that we no longer need Flash or other third party plugins to render media. We can also create custom controls and displays around the video, and one of those displays should be the duration of the video. Let me show you how to get and display the video duration!
The JavaScript
video elements have a duration property which represents the number of seconds in the video. To display the duration in a pretty fashion, you'll need to use parseInt and modulus (%):
// Assume "video" is the video node
var i = setInterval(function() {
if(video.readyState > 0) {
var minutes = parseInt(video.duration / 60, 10);
var seconds = video.duration % 60;
// (Put the minutes and seconds in the display)
clearInterval(i);
}
}, 200);
It's important to use setInterval and check the video's readyState in case the video hasn't loaded by the time you attempt to pull the duration. parseInt is used to get the minute number and modulus is used to get the second count.
![CSS 3D Folding Animation]()
Google Plus provides loads of inspiration for front-end developers, especially when it comes to the CSS and JavaScript wonders they create. Last year I duplicated their incredible PhotoStack effect with both MooTools and pure CSS; this time I'm going to duplicate...
![Introducing MooTools Templated]()
One major problem with creating UI components with the MooTools JavaScript framework is that there isn't a great way of allowing customization of template and ease of node creation. As of today, there are two ways of creating:
new Element Madness
The first way to create UI-driven...
![MooTools Window Object Dumping]()
Ever want to see all of the information stored within the window property of your browser? Here's your chance.
The XHTML
We need a wrapper DIV that we'll consider a console.
The CSS
I like making this look like a command-line console.
The MooTools JavaScript
Depending on what you have loaded...
![Add Styles to Console Statements]()
I was recently checking out Google Plus because they implement some awesome effects. I opened the console and same the following message:
WARNING!
Using this console may allow attackers to impersonate you and steal your information using an attack called Self-XSS.
Do not enter or paste code that you...
There are two events you can use instead of an interval
a)
loadedmetadatab)
durationchangeOf course you still need to check
readyStateinitially.(function(){ var video = document.querySelector('video'); var onDurationChange = function(){ if(video.readyState){ //to your thing } }; video.addEventListener('durationchange', onDurationChange); onDurationChange(); })();You need to divide video duration by 60 to get minutes, then use parseInt with radix 10. We should test if video duration > 0 before our division.
You need to divide video duration by 60 to get minutes, then use parseInt with radix 10.
if (video.duration > 0) { var minutes = parseInt(video.duration / 60, 10); var seconds = video.duration % 60; }David,
You forgot to divide the duration (seconds) by 60 to get minutes:
Thanks for the great articles!
Since when (and on which platforms)
setIntervalpasses the interval ID as argument to the callback function?HTML5 video is really great, gone are the days struggling with Flash codes and easily display our videos. Thanks for the JS code.
Thanks for the code! What if I want also to get the hours and display them as a
HH:mm:ssformat accordingly?I m trying to buid the video using jquery. Please help to fetch the video duration before loaded
var video=$(''); var source= $(''); $(source).appendTo(video); $(source).attr('src',php.mp4); $(source).attr('type','video/mp4'); //var d= $(video).duration; var d=document.querySelector('video').duration; console.log(d);You could just use the javascript
whilefunction…while (true) { if (video.readyState) { //blabla code break; } //code to execute if not accomplished }