Cache XML lecteur vidéo

Résolu
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 - 25 mars 2008 à 19:42
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 - 25 mars 2008 à 23:13
Bonsoir,
Le contexte: je suis en train de développer un lecteur vidéo en javascript.
Dans un premier temps je gérais les frames sous forme d'images dans un tableau, j'ai vite déchanté quand FF/IE montaient à plus de 300mega de ram avec une centaines d'images.
J'ai trouvé une solution qui consiste à gérer un ensemble de frames ( appelé scène ) dans un fichier XML de ce type:
<video id="-1" width="640" heigth="304" frameRate="25.0" videoLength="6032600">
<frames offset="1" noFrames="10">
<frame id="1" value="data:image/jpeg;base64,/9j/4AAQSk...."/>
<frame id="2" value="data:image/jpeg;base64,/9j/4AAQSk..../>
  ....
</frames>
</video>
Une meilleur définition de ce principe ici.
Cela marche très bien dans la mesure où les navigateurs sont prévus pour mettre en cache les réponses XML.
Quand on veut une frame on recherche la scène dans laquelle elle est, puis on recherche la valeur du noeud frame correspondant.
Enfin pour les curieux il suffit de faire:
image.src = scene.getElementsByTagName("frame")[ index ].getAttribute('value');
Magique cela marche l'image est affichée.

Alors voilà le souci:
quand on "joue" les frames contenues dans une même scène tout est fluide.
Le souci ( en particulier sous FF ) vient du passage de la dernière frame vers la première de la scène suivante. Le navigateur rame pendant une petite seconde ce qui est impensable pour un lecteur vidéo efficace.

Aussi, sous FF lors de la seconde lecture tout est beaucoup plus fluide.
Donc c'est la que je me dis, il faut améliorer tout ça pour que dès la première lecture le passage d'une scène à l'autre soit plus fluide sans bien sur faire augmenter la mémoire vive du navigateur.

Je suis tout ouie pour répondre à vos questions si ce n'est pas clair, et bien entendu j'aimerai avoir des suggestions.
D'avance merci à tous,
Pierrick

1 réponse

the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
25 mars 2008 à 23:13
Re,
En fait, je m'étais bien planté... Ce n'est pas le navigateur qui provoquer cet arret, mais bien mon code...
Je m'explique, pour pouvoir proposer une lecture fluide, il faut avoir receptionner un maximum de frame avant de lancer la lecture...
De ce fait je tester si le nombre de frame reçu était supérieur à la position courante plus le temps de lecture minimum. Et c'est là que ça se mettait en pause...
Désolé pour cette question.
Je déposerai une source d'ici peu. ( si le son ne pose pas trop de problème ).
Pour la petite anecdote... Ceux qui ne voient pas l'utilité d'un tel lecteur la réponse est simple, seul flash domine le marché des lecteurs vidéo en lignes. Et pour cause, coté serveur c'est pas si simple de lire une vidéo ( moi j'utilise ffmpeg + un wrapper java ).  De plus si on veut utiliser le lecteur falsh coté client il faut un serveur media flash( 5700? ), car le format vidéo flash est propriétaire...
Donc voilà pourquoi je développe ce petit lecteur.
A bientôt,
Pierrick
3
Rejoignez-nous