Curiosité assez cocasse : il fallait, aux temps reculés ou Flash était tout puissant passer par la balise object
pour insérer du flash proprement, des vidéos notamment.
Avec HTML5, même si le principe est sensiblement le même, il y a quelques changements.
Reprenons donc l'exemple d'utilisation de la balise video
de HTML5. Je le complète avec le format WebM.
Donc, la première source indique la version mp4 de l'animation (et c'est obligatoire pour l'Ipad que la version mp4 soit en tête de liste...).
<video width="400" height="222" controls="controls">
<source src="/animations/Rings.mp4" type="video/mp4" />
<source src="/animations/Rings.webm" type="video/webm" />
<source src="/animations/Rings.ogv" type="video/ogg" />
Ici le texte alternatif !
</video>
La seconde source indique la vidéo au format WebM et la troisième indique la vidéo au format Ogg. Les navigateurs ne pouvant pas lire le mp4 ni la version WebM nativement (comme Firefox 3.6) prendront la version au format ogg.
Particularité de la syntaxe XHTML : il faut ajouter
controls="controls"
(et pas juste controls
comme vous pourrez le voir sur certains exemples) pour avoir les possibilités de contrôle de la vidéo.
Donc, à partir de cet exemple, on peut toucher tous les navigateurs modernes (ainsi que l'iPad et l'iPhone). C'est-à-dire tous les principaux acteurs (Opéra, Chrome, Firefox, Safari)... sauf Internet Explorer.
Pour ce dernier, il faut insérer à la place de "Ici le texte alternatif !" une façon de lire la vidéo. Dans mon exemple, j'ai pris le player Youtube.
Problème, Internet Explorer 6 le mal nommé nécessite la balise embed
qui est donnée... qui n'est absolument pas valide. En ajoutant un commentaire conditionnel pour cacher le code incriminé, on arrive à avoir un code totalement valide.
<video width="400" height="222" controls="controls">
<source src="/animations/Rings.mp4" type="video/mp4" />
<source src="/animations/Rings.webm" type="video/webm" />
<source src="/animations/Rings.ogv" type="video/ogg" />
<object type="application/x-shockwave-flash"
width="400" height="222"
data="https://www.youtube.com/v/JqkAt_s3HSE">
<param name="movie"
value="https://www.youtube.com/v/JqkAt_s3HSE" />
<param name="wmode" value="transparent" />
<!--[if lte IE 6 ]>
<embed
src="https://www.youtube.com/v/JqkAt_s3HSE"
type="application/x-shockwave-flash"
allowscriptaccess="always" allowfullscreen="true"
width="400" height="222">
</embed>
<![endif]-->
Vous n'avez pas de navigateur moderne,
ni flash d'installé sur Internet Explorer...
suivez les liens ci-dessous pour télécharger les vidéos.
</object>
</video>
Au final, on a une solution compatible sur tous les navigateurs :
- les modernes lisent la vidéo nativement (même ceux qui sont allergiques à Flash comme l'iPad),
- les moins modernes ont l'alternative de la balise video, donc le plugin flash pour lire la vidéo,
- et les vieux tromblons ont l'alternative du flash, donc le message explicatif.
Le tout est valide, et plutôt simple à implémenter.