Tag - video

Fil des billets - Fil des commentaires

Mise au point sur la balise video d’HTML5 et son intégration dans Firefox 3.1

Au vue des âne­ries qui fleu­ris­sent en ce moment sur le Web con­cer­nant la balise HTML <video> je pense qu’il est temps de faire une mise au point.

La norme HTML5 est actuel­le­ment en pré­pa­ra­tion par le WHATWG (qui regroupe entre autre Mozilla, Apple et Opera). Parmi la plé­thore de nou­veau­tés il y a la balise HTML <video>. A l’ins­tar de la balise <img> qui per­met d’inclure les ima­ges, elle per­met d’inclure dans une page Web une vidéo. Il est impor­tant de noter que les spé­ci­fi­ca­tions de cette balise ne sont pas figées, HTML5 est d’ailleurs encore en chan­tier et sa der­nière révi­sion (au moment de la rédac­tion de cet arti­cle) date du 6 août 2008.

Quel­les sont les dif­fé­ren­ces avec les bali­ses <embed> et <object> ?

Pour lire une vidéo incluse via les bali­ses <embed> ou <object> il faut que les plu­gins cor­res­pon­dants soient ins­tal­lés sur le navi­ga­teur de l’inter­naute. Quick­time, Win­dows Media Player et VLC par exem­ple, ins­tal­lent leur plu­gins auto­ma­ti­que­ment pour les navi­ga­teurs prin­ci­paux.

L’avan­tage de la balise <video> est de ne plus avoir besoin, en théo­rie, de ces plu­gins. En effet elle uti­lise soit les codecs gérés en natif dans le navi­ga­teur soit les capa­ci­tés de Direct­Show, Quick­time ou Gstrea­mer/Pho­non (res­pec­ti­ve­ment sous Win­dows, Mac et Linux).

La balise <video> apporte aussi une API uni­fiée. On a ainsi tou­jours les mêmes métho­des, start(), stop() etc., quel­que soit le codec de la vidéo. Cette API ouvre la voie à la créa­tion de scripts avan­cés et d’exten­sions Fire­fox pour per­son­na­li­ser la lec­ture des vidéos sur le Web.

Der­nier avan­tage, cette balise apporte de la séman­ti­que, là ou les autres bali­ses étaient vide de sens.

Quel­les sont les dif­fé­ren­ces avec les lec­teurs fait en Flash ?

Pas besoin – en théo­rie – d’avoir à ins­tal­ler un plu­gin par­ti­cu­lier. Même si de nos jours Flash est quasi-omni­pré­sent, il reste encore des cas par­ti­cu­liers (cf. l’iPhone).

Autre pro­blème, c’est le con­cep­teur du lec­teur Flash qui décide de ses fonc­tions. J’ai déjà ren­con­tré des vidéos où l’on ne pou­vait pas avan­cer manuel­le­ment la lec­ture : même si on avait déjà vu la pre­miè­res minu­tes, j’ai été obligé de me les reta­per pour voir la suite. Avec la balise <video> et grâce à son API ou via l’inter­face uti­li­sa­teur du navi­ga­teur (si il le pro­pose), on PEUT choi­sir d’affi­cher ses pro­pres con­trô­les.

Y-a-t-il un sup­port du strea­ming ?

En théo­rie, oui.

Y-a-t-il un sup­port du plein écran ?

La spé­ci­fi­ca­tion de la norme HTML5 recom­mande aux navi­ga­teurs ne pas pro­po­ser cette fonc­tion dans l’API (ce qui nous pro­tège d’un script lan­çant auto­ma­ti­que­ment une vidéo en plein écran). Le plein écran res­tera pos­si­ble à con­di­tion que le navi­ga­teur le per­mette quel­que part dans son inter­face, donc uni­que­ment sur une action de l’uti­li­sa­teur.

Peut-on lire tous les types de vidéos ?

Non, seu­le­ment ceux sup­por­tés par le navi­ga­teur en stan­dard (natif) et ceux dis­po­ni­bles dans le backend du sys­tème d’exploi­ta­tion. Sinon il fau­dra ins­tal­ler un plu­gin et on perd donc un avan­tage de la balise video. Cela nous amène donc au sup­port de Ogg par défaut dans Fire­fox 3.1.

Pour­quoi Fire­fox 3.1 n’implé­men­tera (que) Ogg en natif ?

D’abord un petit rap­pel : Ogg est un con­te­neur, un for­mat de fichier qui con­tient des flux audio et vidéo. Ces flux audio et vidéo peu­vent être codés avec les codecs Theora pour la vidéo et Vor­bis pour le son. Sub­jec­ti­ve­ment, Theora fait par­tie des meilleurs for­mats vidéo du moment, qui sont Theora, xvid, h264 et VC-1. Theora a l’avan­tage d’être libre, ou du moins plus libre que les autres. En plus, on ne lui con­naît pas encore de pro­blè­mes liés aux bre­vets logi­ciels. En con­tre­par­tie c’est pro­ba­ble­ment aussi le moins bon des qua­tre.

On voit donc que n’implé­men­ter aucun for­mat en natif nous ramène au pro­blème d’incom­pa­ti­bi­lité en fonc­tion du sys­tème de l’uti­li­sa­teur (on est dépen­dant du backend) et implé­men­ter un autre for­mat que Ogg peut poser des pro­blè­mes juri­di­ques et finan­ciers à ceux qui les uti­li­sent.

Pour que tout aille mieux dans le meilleur des mon­des il faut donc main­te­nant que les autres navi­ga­teurs sui­vent le mou­ve­ment et un effort de la part des con­cep­teurs de sites Web. Con­cer­nant les navi­ga­teurs, il existe déjà depuis un moment déjà des ver­sions de tests d’Opera sup­por­tant la balise <video> et Ogg en natif. Quant à Web­kit je crains mal­heu­reu­se­ment qu’il n’implé­mente jamais Ogg en natif, Apple pré­fè­rera plu­tôt pous­ser à l’adop­tion de son for­mat féti­che : le h.264. Il faut savoir qu’à l’ori­gine la norme HTML5 obli­geait les navi­ga­teurs a géré Ogg en natif, mais cette obli­ga­tion a été reti­rée suite à des pres­sions d’Apple et de Nokia.

Con­cer­nant les sites Web, Wiki­me­dia Com­mons uti­lise déjà la balise <video> depuis le début et tou­tes les vidéos du site sont au for­mat Ogg, à quand Wiki­pé­dia ?

Pour finir, un exem­ple d’uti­li­sa­tion :

<video controls src="video.ogg" id="myVideo">$</video>

$ = Texte ou code HTML, qui peut être une balise <object> ou <embed> pour pou­voir affi­cher la vidéo dans les navi­ga­teurs ne sup­por­tant pas la balise <video>, mais avec l’incon­vé­nient bien sûr qu’elle n’est plus pilo­ta­ble en javas­cript.

Et si on veut défi­nir ses pro­pres con­trô­les et ne pas uti­li­ser ceux du navi­ga­teur (exem­ple) :

<script>
var video = docu­ment.getE­le­ment­ById("video");
</script>
<p><but­ton type="but­ton" onclick="video.play();">Lec­ture</but­ton>
<but­ton type="but­ton" onclick="video.pause();">Pause</but­ton>
<but­ton type="but­ton" onclick="video.stop();">Stop</but­ton><p>

Ce qui nous donne :

Capture d'écran du lecteur

Je ferais un lec­teur plus com­plet dès que je trou­ve­rais le temps.

Manipuler des vidéos avec SVG, Firefox 3 et l'élément HTML <video>

Souvenez-vous, il y a quelques semaines je vous avait parlé d'une galerie d'image rudimentaire en SVG. Chris Double, la personne travaillant à l'implémentation de l'élément HTML <video> dans Firefox 3 a modifié cette galerie pour pouvoir manipuler les vidéos. Petit rappel : Firefox 3 pourra afficher nativement (sans ajout de plugins additionnels) les vidéos et sons respectivement au format Theora et Vorbis.

Je trouve le résultat assez impressionnant. J'ai toujours pensé que le langage SVG servait uniquement à afficher des images vectorielles statiques mais Chris nous démontre bien qu'avec du SVG, du JavaScript et l'élément <video> on peut faire des applications interactives.

Dans la vidéo qu'il a publié on le voit redimensionner et déplacer des vidéos en pleine lecture. C'est même uniquement le son de la vidéo en premier plan est joué.

Vidéo de démonstration. Voir plus bas pour la télécharger.

La vidéo est disponible dans plusieurs formats :