Le multimédia en HTML5

Transcription

Le multimédia en HTML5
Cours 8 – Le multimédia en HTML5
3INOC – 2013-14
B. Emery
Lemultimé diaenHTML5
Introduction
Grande nouveauté du HTML5, les éléments multimédia permettent d’inclure de la vidéo ou de l’audio
directement dans les pages HTML sans devoir recourir à des plugins tiers, comme Flash. Le principal
problème est la grande variété des formats supportés par les différents navigateurs.
Le son :
Les différents formats
Avant d’attaquer les balises permettant de diffuser des sons dans un fichier HTML, il est
important de préciser que chaque navigateur n’est capable de lire que certains types
d’encodage des fichiers audio. Ainsi, le plus grand défaut du HTML5, c’est l’obligation de
devoir posséder plusieurs formats du même fichier pour s’assurer une compatibilité maximale.
Heureusement, il existe des logiciels pour convertir les fichiers audio dans les différents
formats existant.
Chrome supporte tous les formats standards ainsi, il ne sera pas nécessaire de se soucier des
formats dans ce cours. En comparaison, Firefox ne supporte que le format Vorbis (.ogg)
tandis qu’Internet Explorer ne supporte que les formats MP3 et AAC. En fait, il n’y a qu’un
seul format compatible avec tous les navigateurs, c’est le format PCM non-compressé.
Malheureusement l’utilisation d’un format non-compressé via le web surcharge la bande
passante.
L’élément audio : <audio>
Pour insérer un élément musical dans une page HTML, il suffit d’utiliser la balise <audio> qui
possède de nombreux attributs spécifiques. Premièrement, l’attribut controls permet
d’afficher des boutons de contrôle pour lancer ou arrêter le son. Le design de ceux-ci dépend
du navigateur (à moins de les créer avec en HTML/CSS et JS).
Deuxièmement, l’attribut src permet de spécifier l’adresse url du fichier. Il n’est pas
obligatoire puisqu’il peut être remplacé par la balise <source> comme indiqué ci-dessous.
L’attribut autoplay permet de lancer la lecture immédiatement après le chargement, tandis
que l’attribut loop permet de jouer en continue.
L’attribut preload permet d’indiquer au navigateur s’il faut charger le fichier audio au
chargement de la page HTML ou non. En effet, les fichiers audio (ou vidéo) pouvant être très
volumineux, le pré-chargement d’un fichier qui ne sera pas joué consomme de la bande
passante inutilement. Cet attribut peut prendre les valeurs none (aucun), metadata (données
informatives) ou auto (préchargement complet). Il n’y a pas de valeur par défaut, car celle-ci
varie d’un navigateur à l’autre.
1
Cours 8 – Le multimédia en HTML5
3INOC – 2013-14
B. Emery
Il existe d’autres attributs moins usités, tel que muted (qui permet de couper le son au
chargement) ou mediagroup (qui permet de lier plusieurs éléments média ensemble en leur
attribuant un nom commun).
La source : <source src="fichieraudio.ext" />
En raison de la variété des formats supportés (ou plutôt non-supportés) par les navigateurs, il
vaut mieux recourir à la balise <source> située entre les balises <audio> plutôt que l’attribut
src inclus dans la balise <audio>. Ainsi pour spécifier l’adresse url de chaque format du
fichier audio, on utilise la balise <source src="fichier.ext" /> pour chaque fichier. Le
navigateur choisira automatiquement le fichier à utiliser.
C’est l’occasion de parler d’adresse relative et statique. Une adresse statique commence par
http://, elle est plus facile à repérer puisqu’il suffit de copier celle de la barre d’adresse du
navigateur. Pour une adresse relative, il faut considérer l’arborescence des dossiers, mais elle
a l’avantage de ne pas devoir être modifiée si le site change d’adresse. La position de l’adresse
relative « commence » dans le répertoire du fichier HTML qui appelle le fichier audio. Si ce
dernier se trouve dans un dossier inclus dans le dossier racine, il suffit d’indiquer le nom du
répertoire puis de séparer son nom de celui du fichier audio par un / (p.ex :
src="répertoire/fichier.ogg"). S’il faut remonter d’un niveau de répertoire on utilise le
symbole ../ (p.ex : src="../fichier.ogg"). Il est évidement possible de combiner les deux.
Exemple :
<audio controls autoplay loop>
<source src="audio/fichier.mp3" />
<source src="audio/fichier.ogg" />
<!-- les fichiers sont dans un répertoire nommé audio -->
Votre navigateur ne supporte pas la balise HTML5 audio !
<!-- Cette phrase ne sera affichée que sur un navigateur non compatible -->
</audio>
Et la vidéo :
La balise <video> est très similaire à la balise <audio> mais possède en plus un espace d’affichage
pour la vidéo et des attributs supplémentaires. Il est possible de jouer des vidéos ou de simples fichiers
audio avec l’un ou l’autre de ces éléments, mais une image ne sera affichée qu’avec l’élément
<video>.
L’élément vidéo : <video>
Très similaire à <audio>, <video> reprend les mêmes attributs. Nous pouvons ajouter à ceuxci l’attribut poster="image.jpg" (qui permet de spécifier l’adresse url d’une image de
remplacement tant que la vidéo n’est pas chargée) et les attributs width et height (qui peuvent
être remplacé par une déclaration CSS).
Concernant les formats acceptés par les différents navigateurs, encore une fois il n’y a pas
d’homogénéité. Plusieurs sources devront donc être spécifiée pour une compatibilité générale,
avec la balise <source />. Chrome supporte pratiquement tous les formats, mais Firefox ne
supporte que le format Theora (.ogg) et IE, les formats MPEG-4 ou H.264.
2
Cours 8 – Le multimédia en HTML5
3INOC – 2013-14
B. Emery
La balise de sous-titrage : <track kind="type" src="fichier.ext" />
Tout comme <source />, <track /> est inclus dans un élément <video>. Il permet d’assigner
des sous-titres à la vidéo. L’attribut kind détermine le type et peut prendre les valeurs
suivantes : subtitles (sous-titre, par défaut), captions (sous-titre pour les malentendants),
descriptions (il s’agit d’une audio-description pour les malvoyants), chapters (chapitre),
metadata (informations non affichées mais utilisée pour les scripts).
Il peut également recevoir les attributs label="français" (qui spécifie la langue pour
l’utilisateur), srclang="fr" (qui spécifie la langue pour le navigateur), et default qui permet
de déterminer quel élément <track> est utilisé par défaut durant la lecture de la vidéo.
Personnaliser les contrôleurs :
Chaque navigateur gère sa propre interface par défaut, appelée à l’aide de l’attribut controls.
Cependant, les boutons permettant le contrôle des éléments audio/vidéo peuvent être aussi créés avec
une combinaison des langages HTML, CSS et JavaScript. Cela permet de réaliser un lecteur
personnalisé ayant la même apparence sur tous les navigateurs.
Créer un bouton : <input type="button" />
Cette balise permet de créer un bouton auquel on peut assigner du code JavaScript pour
manipuler les éléments audio ou vidéo. On ajoute l’attribut value="texte" pour afficher du
texte dans le bouton.
On ajoute un gestionnaire d’événement pour appeler le code JavaScript. Habituellement, on
utilise onclick, mais d’autres peuvent être employés. Il est possible de faire de n’importe quel
élément HTML un bouton à l’aide du gestionnaire d’événement et de lui donner une certaine
forme d’interactivité à l’aide des pseudo-classes CSS comme :hover et :active.
Attributs JavaScript liés aux éléments multimédia :
Lorsqu’on associe une variable à un élément <audio> ou <video> (avec getElementById()
p.ex.), on peut récupérer et/ou modifier certains attributs par une notation pointée. Ainsi
.paused possède la valeur true si l’élément est en pause et false s’il est joué.
.playbackRate permet de contrôler la vitesse de lecture. La vitesse normale est 1.0. Une
valeur plus grande accélère la lecture, plus petite la ralentit. Théoriquement un chiffre négatif
permet de revenir en arrière, mais cela est modérément supporté par les navigateurs.
Les attributs .videoHeight et .videoWidth permettent de récupérer la hauteur et la largeur
native en pixel de la vidéo.
L’attribut .currentTime permet de récupérer et de modifier la position de la lecture, en
seconde. Et l’attribut .volume permet de régler le volume sonore, de 0.0 à 1.0.
De nombreux autres attributs sont disponibles, avec plus ou moins d’intérêt. Vous les
retrouverez sur le site du W3C.
3
Cours 8 – Le multimédia en HTML5
3INOC – 2013-14
B. Emery
Méthodes JavaScript liées aux éléments multimédia :
En plus des attributs, il existe différentes méthodes associées aux éléments multimédia. Les
plus intéressantes sont .play() et .pause() qui permettent de lancer ou d’interrompre la lecture
du fichier. L’attribut .paused ne peut être utilisé que pour savoir si l’élément est en pause ou
non, et non pour modifier son état.
Exemple de bouton play/pause fonctionnel :
<audio id="lecteur" src="mon_fichier.ogg" autoplay loop > Votre navigateur n’est pas
compatible </audio>
<!-- le lecteur ne sera pas affiché et joue automatiquement -->
<input type="button" value="Pause" onclick="playPause(this);" />
<!-- le bouton appelle la fonction suivante au click. On utilise le mot-clé this pour transmettre le
bouton lui-même en paramètre afin de pouvoir modifier sa valeur sans devoir l’associer à une
variable. -->
<script type="text/javascript">
function playPause(bouton) {
var lect=document.getElementById("lecteur");
if (lect.paused) { // on teste pour savoir si l’élément est en pause
lect.play(); // lance la lecture
bouton.value="Pause";} // affiche la valeur Pause dans le bouton.
else {
lect.pause(); // arrête la lecture
bouton.value="Jouer";}
}
</script>
Principales références :
Site du W3C : http://www.w3.org
DÉVELOPPER VOTRE SITE WEB, F. Basmaison et coll., MicroApplication 2012
4