J'essaie de créer un lecteur vidéo qui fonctionne partout. Pour l'instant, j'ai opté pour :
<video>
<source src="video.mp4"></source>
<source src="video.ogv"></source>
<object data="flowplayer.swf" type="application/x-shockwave-flash">
<param name="movie" value="flowplayer.swf" />
<param name="flashvars" value='config={"clip":"video.mp4"}' />
</object>
</video>
(comme on le voit sur plusieurs sites, par exemple vidéo pour tous ) jusqu'à présent, tout va bien.
Mais maintenant, je veux aussi une sorte de liste de lecture/menu avec le lecteur vidéo, à partir duquel je peux sélectionner d'autres vidéos. Celles-ci doivent s'ouvrir immédiatement dans mon lecteur. Je vais donc devoir "changer dynamiquement la source de la vidéo" (comme vu sur dev.opera.com/articles/tout ce dont vous avez besoin pour savoir-html5-video-audio/ - section "Regardons un autre film") avec Javascript. Oublions la partie Flash player (et donc IE) pour l'instant, j'essaierai de m'en occuper plus tard.
Donc mon JS pour changer le <source>
devrait être quelque chose comme :
<script>
function loadAnotherVideo() {
var video = document.getElementsByTagName('video')[0];
var sources = video.getElementsByTagName('source');
sources[0].src = 'video2.mp4';
sources[1].src = 'video2.ogv';
video.load();
}
</script>
Le problème est que cela ne fonctionne pas dans tous les navigateurs. En particulier, dans Firefox, il y a une belle page où vous pouvez observer le problème que je rencontre : http://www.w3.org/2010/05/video/mediaevents.html
Dès que je déclenche la load()
(dans Firefox, attention), le lecteur vidéo meurt.
Maintenant j'ai découvert que lorsque je n'utilise pas de multiples <source>
mais une seule src
au sein de l'élément <video>
tag, le tout fait fonctionnent dans Firefox.
Donc mon plan est de juste utiliser ça src
et déterminer le fichier approprié en utilisant l'attribut canPlayType() fonction.
Est-ce que je m'y prends mal ou est-ce que je complique les choses ?
0 votes
Ça me semble très bien. En quoi le fait de simplifier le balisage est-il "compliqué" ?
0 votes
Le problème est que je me retrouve avec beaucoup de javascript et de distinction de cas. si j'ai raté quelque chose, par exemple s'il y avait un moyen de le faire fonctionner dans firefox AVEC de multiples
<source>
tags. alors je suppose que ce serait plus facile0 votes
Avez-vous trouvé la solution pour la partie flash sur ie8 ?
0 votes
@Neeraj la solution finale a impliqué le plugin video.js L'utilisation de ce plugin n'a pas non plus permis de résoudre le problème de firefox concernant la méthode load(), qui était la motivation initiale de ce billet. Aujourd'hui, il semble que ce problème ait été résolu depuis longtemps.