La récupération de la vidéo HTML5 durée séparément à partir du fichier

Je travaille sur la construction d'un lecteur vidéo HTML5 avec une interface personnalisée, mais je vais avoir quelques problèmes pour obtenir la durée de la vidéo d'information à afficher.

Mon HTML est simple:

<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>

Et le javascript que j'utilise pour obtenir et insérez la durée est

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

Le problème est que rien ne se passe. Je sais que le fichier vidéo est la durée de données parce que si je viens d'utiliser les contrôles par défaut, il affiche bien.

Mais la vraie chose étrange est que si je mets de l'alerte(durée) dans mon code comme

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

puis il fonctionne très bien (moins les fenêtres d'alerte pop-up). Toutes les idées de ce qui se passe ici, ou comment je peux résoudre ce problème?

Mise à JOUR: Ok, donc si je n'ai pas résolu ce problème exactement, mais je n'ai trouver un travail autour de qui gère mon plus gros souci... l'expérience de l'utilisateur.

Tout d'abord la vidéo ne commence pas de chargement jusqu'à ce que après que le visiteur frappe le bouton de lecture, donc je suis en supposant que la durée de l'information n'était pas disponible pour être tiré (je ne sais pas comment résoudre ce problème particulier... même si je suppose que cela impliquerait vient de charger les métadonnées de la vidéo séparément de la vidéo, mais je ne sais même pas si c'est possible).

Afin de contourner le fait qu'il n'existe pas de données sur la durée, j'ai décidé de cacher la durée de l'info (et en fait l'ensemble de contrôle) complètement jusqu'à ce que vous appuyez sur "jouer".

Cela dit, si quelqu'un sait comment faire pour charger les métadonnées de la vidéo séparément à partir du fichier vidéo, s'il vous plaît partager. Je pense que cela devrait résoudre complètement ce problème.

  • Quel navigateur utilisez-vous pour l'exécution de vos HTML5? Pas tous les navigateurs prend en charge HTML5.
  • Je ne pense pas que c'est un problème de navigateur. Je suis l'aide de la dernière version de Firefox / Webkit / Chrome pour le tester
  • Vous pouvez signaler la durée avec un X-Content-Duration en-tête HTTP. Le navigateur peut faire un HEAD demander de recueillir cette information avant le téléchargement de la vidéo. developer.mozilla.org/en/Configuring_servers_for_Ogg_media
  • Si vous ne video.load() dans le code JavaScript qui sera au moins charger les métadonnées, mais c'est une situation ambiguë. Je souhaite que vous pourriez charge des métadonnées. Je vais avoir des problèmes avec ma recherche de témoins. Elles ne fonctionnent que si l'utilisateur appuie sur play tout d'abord, pour que la vidéo se charger et il est de métadonnées.
InformationsquelleAutor drebabels | 2010-02-08