Problem retrieving HTML5 video duration

Posted by drebabels on Stack Overflow See other posts from Stack Overflow or by drebabels
Published on 2010-02-08T10:55:09Z Indexed on 2010/04/08 18:53 UTC
Read the original article Hit count: 459

Filed under:
|
|

UPDATE: Ok so although I haven't solved this problem exactly, but I did figure out a work around that handles my biggest concern... the user experience.

First the video doesn't begin loading until after the viewer hits the play button, so I am assuming that the duration information wasn't available to be pulled (I don't know how to fix this particular issue... although I assume that it would involve just loading the video metadata separately from the video, but I don't even know if that is possible).

So to get around the fact that there is no duration data, I decided to hide the duration info (and actually the entire control) completely until you hit play.

I know... its cheating. But for now it makes me happy :)

That said... if anyone knows how to load the video metadata separately from the video file... please share. I think that should completely solve this problem.


I am working on building a HTML5 video player with a custom interface, but I am having some problems getting the video duration information to display.

My HTML is real simple (see below)

<video id="video" poster="image.jpg" controls>     
    <source src="video_path.mp4" type="video/mp4" />
    <source src="video_path.ogv" type="video/ogg" /> 
</video>
<ul class="controls"> 
<li class="time"><p><span id="timer">0</span> of <span id="duration">0</span></p></li>  
</ul>

And the javascript I am using to get and insert the duration is

var duration = $('#duration').get(0);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;

The problem is nothing happens. I know the video file has the duration data because if I just use the default controls, it displays fine.

But the real strange thing is if I put alert(duration) in my code like so

alert(duration);
var vid_duration = Math.round(video.duration);
duration.firstChild.nodeValue = vid_duration;

then is works fine (minus the annoying alert that pops up). Any ideas what is happening here or how I can fix it?

© Stack Overflow or respective owner

Related posts about html5

Related posts about video