LES BALISES AUDIO ET VIDÉO EN HTML5



Documents pareils
KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

FORMATION MULTIMÉDIA LVE

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

CRÉER UN DVD VIDEO avec DVD FLICK (avec ou sans menu)

Responsive Web design, périphériques mobiles et accessibilité

FORMATION MULTIMÉDIA LVE

Freeway 7. Nouvelles fonctionnalités

TP JAVASCRIPT OMI4 TP5 SRC

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Déploiement d application Silverlight

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

Tutoriel n 3. Comment préparer votre support de présentation (vidéo)? Plugin «rich media» pour Moodle 2

Guide de réalisation d une campagne marketing

COURS WINDEV NUMERO 3

Formation Webmaster : Création de site Web Initiation + Approfondissement

Créer une base de données vidéo sans programmation (avec Drupal)

EXTENSION WORDPRESS. Contact Form 7. Proposé par :

DÉFINITION DE LA NEWSLETTER : OUVERTURE DU LOGITIEL ETARGET

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Démonstration de la mise en cache via HTML 5 sur iphone

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

Tutoriel BLOGGER. Pour vous donner une idée, voici un exemple de blog :

Pack Fifty+ Normes Techniques 2013

4. Personnalisation du site web de la conférence

DOSSIER FLASH. «Path - Tango»

Programmation Web TP1 - HTML

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Windows sur Kimsufi avec ESXi

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Dans la série Les tutoriels libres présentés par le site FRAMASOFT. <Handbrake> <Utilisation d'handbrake pour les débutants> Par <OLIVIER LECLERCQ>

Manuel du composant CKForms Version 1.3.2

PARAGON - Sauvegarde système

Réaliser des achats en ligne

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

INCORPORER EXCEL EN LIGNE DANS UN FICHIER CRÉÉ AVEC L ÉDITEUR DE TEXTE 15 avril 2015

Banque de données d offres & carte web interactive d offres

TUTORIEL. L application SIKKENS FR pas à pas

Guide d utilisation 2012

Toute personne souhaitant maîtriser les techniques liées à la conception de produits multimédia et à la création de sites Web.

Tutoriel pour la création d'un Google Sites

Ripper vos DVD (extraire vos fichier du DVD pour les mettre sur votre pc)

Relever le défi du Web mobile

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Optimiser le référencement naturel de son site web

Optimiser pour les appareils mobiles

Comment utiliser WordPress»

Comment enregistrer simplement toute musique restituée par votre PC

Chapitre 2 Créer son site et ses pages avec Google Site

COMMENT OPTIMISER SON RÉFÉRENCEMENT NATUREL?

La balise object incorporer du contenu en HTML valide strict

Les pré-requis pour créer un.ave pour Android

TP 5 Les CMS, la forme et le fond Internet et Outils (IO2)

Comment mettre en page votre livre

UltraBackup NetStation 4. Guide de démarrage rapide

Dans la série. présentés par le site FRAMASOFT

Optimiser les s marketing Les points essentiels

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Géographie CM2. Guide pédagogique. Ressources vidéoprojetables & 14 animations interactives. Jacques Arnaud Nicole Darcy Daniel Le Gal

Ecrire pour le web. Rédiger : simple, concis, structuré. Faire (plus) court. L essentiel d abord. Alléger le style. Varier les types de contenus

Programmation Web. Madalina Croitoru IUT Montpellier

1. Installation du Module

Utiliser le site Kahoot pour créer des quiz interactifs

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,

A. L audit de l ergonomie 11. B. Quand réaliser un audit de l ergonomie? 11. C. Notions élémentaires Utilisabilité 12 2.

INTRODUCTION AU CMS MODX

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Responsive Web Design. La Rochelle, Avril 2014

ING & NEWSLETTER NEWSLETTER RESPONSIVE

Design adaptatif. Guide de l utilisateur VIENNA LONDON MUNICH BERLIN PARIS HONG KONG MOSCOW ISTANBUL BEIJING ZURICH

CMS Made Simple Version 1.4 Jamaica. Tutoriel utilisateur Récapitulatif Administration

CREG : versailles.fr/spip.php?article803

Concevoir son premier espace de cours sur la plateforme pédagogique Moodle

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Conferencing Services. Web Meeting. Guide de démarrage rapide V5_FR

MAJ 08/07/2013. INSTALLATION RAPIDE Version 1.3

Configuration de la Borne Interactive

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

HTML. Notions générales

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Soyez accessible. Manuel d utilisation du CMS

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

Création d un site Internet

Certificats de signature de code (CodeSigning)

Vous avez reçu une pièce jointe VOTRE SITE.RAR, qu en faire?

Qu est ce qu une bibliothèque?

Créer et partager des fichiers

Création de maquette web

Enregistrer 27. ENREGISTREMENT ouvre une boîte de dialogue similaire à celle qui est décrite ici. «Enregistrement» sous l'écran vidéo

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Manuel d administration de Virtual Box MANUEL D UTILISATION VIRTUAL BOX

LA BOX FIBRE DE SFR GUIDE D UTILISATION COMPLET (MAIS PAS COMPLEXE) SFR.FR

Importer des images sur la bibliothèque de contenus multimédia librement réutilisable de Wikimédia Commons

Le stockage local de données en HTML5

cbox VOS FICHIERS DEVIENNENT MOBILES! POUR CLIENT MAC OS X MANUEL D UTILISATION

Bien architecturer une application REST

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

Transcription:

LES BALISES AUDIO ET VIDÉO EN HTML5 Eskimon 29 octobre 2015

Table des matières 1 Introduction 5 2 Les balises audio et vidéo 7 2.1 Les balises audio et vidéo.............................. 7 2.2 Les éléments importants de ces balises....................... 7 2.2.1 La source................................... 7 2.3 Contrôler (simplement) le média.......................... 8 2.3.1 Les options «natives»........................... 8 2.3.2 Encore plus loin, des sous-titres pour les vidéos............... 9 2.3.3 Fallback.................................... 9 3 Interagir un peu plus avec les médias 11 3.0.1 Structure de base............................... 11 3.0.2 Mettre nos contrôleurs............................ 12 3.0.3 Interagir avec la vidéo............................ 13 4 TP : Faire votre propre lecteur multimédia 15 4.1 Consigne...................................... 15 4.1.1 Niveau 1................................... 15 4.1.2 Niveau 2................................... 15 4.1.3 Niveau 3................................... 15 4.2 Solution...................................... 15 5 Conclusion 17 3

1 Introduction Le HTML5 a apporté son lot de nouveautés, notamment au niveau du contenu multimédia. En effet, avant, il était bien souvent nécessaire de faire appel à des conteneurs lourds comme Flash. Dorénavant, des balises dédiées à ces usages ont été introduites : <video> pour les contenus audio ET vidéo ; <audio> pour les contenus audio uniquement. Dans ce tutoriel, nous allons découvrir comment utiliser ces deux balises. Nous verrons tout d abord une approche simple de ces dernières, puis nous étudierons comment rendre les choses plus intéressantes en essayant de créer notre propre lecteur multimédia en HTML5. [[i]] Afin de bien suivre ce tutoriel, de (petites) bases en HTML sont nécessaires ainsi qu un peu de JavaScript. [[i]] La balise <audio> ayant un comportement très proche de celle de la vidéo (à quelques fonctions près), je me concentrerai davantage sur cette dernière. A la fin de ce tutoriel, vous serez en mesure de réaliser votre propre lecteur multimédia HTML5. Voici quelques exemples : [[secret]] 5

2 Les balises audio et vidéo 2.1 Les balises audio et vidéo Comme vous le savez, en HTML, tout élément est représenté par une balise. audio et video ne feront pas exception. Ces éléments sont de type block et sont écrits de la manière suivante : <audio> <!-- Des informations sur la piste audio --> </audio> <video> <!-- Des informations sur la vidéo --> </video> 2.2 Les éléments importants de ces balises Bien que leurs buts soient différents, ces deux balises sont très similaires dans leur comportement. Finalement, la seule différence entre un contenu audio et vidéo est que le second peut inclure le premier (mais pas nécessairement). Dans un cas comme dans l autre, on souhaite lire une piste et afficher une interface à l utilisateur pour interagir avec cette dernière. Cela nous amène donc au premier attribut indispensable de ces deux balises : la source. 2.2.1 La source Savoir afficher une balise audio/vidéo c est bien, mais si on ne lui donne rien à afficher, on n est pas plus avancé! Il va donc falloir donner une source à afficher. Tout comme pour une image, elle peut être relative ou absolue. Il existe deux moyens pour la spécifier. 2.2.1.1 Via l attribut src Là encore, comme pour une image, il suffit de spécifier l attribut src pour donner un lien vers la vidéo ou le flux audio à lire. <video src="http://masource.com/lavideo.avi"> </video> 7

2 Les balises audio et vidéo 2.2.1.2 Via la balise <source> Cependant, il peut être intéressant de proposer plusieurs formats à l utilisateur. En effet, tous les navigateurs ne savent pas lire tous les formats vidéo. On propose donc la même vidéo dans des formats différents et le navigateur choisira! Pour cela, on utilise la balise <source> dans la balise audio/vidéo. <video> <source src="chemin/vers/masource.mp4" type="video/mp4"> <source src="chemin/vers/masource.ogg" type="video/ogg"> <source src="chemin/vers/masource.webm" type="video/webm"> </video> Voici une petite démonstration 1 de ce dernier cas : ->!(https ://jsfiddle.net/tmjosu22/3/) <- [[q]] Mais c est pourri, on peut pas lancer la vidéo! Ça marche pas! En fait si, tout marche très bien, c est juste que maintenant que nous avons la vidéo, il va falloir la contrôler 2.3 Contrôler (simplement) le média Maintenant que la vidéo est présente, ajoutons un peu d interactivité à cette dernière 2.3.1 Les options «natives» Les balises multimédia possèdent par défaut quelques attributs bien pratiques. En effet, voici une liste non exhaustive de celles que j estime être les plus utiles dans l immédiat : controls : permet de rajouter des boutons de contrôle de lecture standards (lecture/pause, barre de progression, plein-écran ) ; autoplay : (plutôt évident ) la lecture est lancée automatiquement dès que la vidéo commence à se charger ; n en abusez pas, cela peut être assez gênant pour la navigation ; poster ˆ*ˆ : lien vers une image d illustration si la vidéo n est pas disponible à l adresse spécifiée ; loop : relance la lecture quand cette dernière est terminée, encore et encore ; height et width ˆ*ˆ : pour spécifier une hauteur et une largeur au lecteur ; muted : coupe le son. ~* ne s applique pas à la balise audio~ Voici par exemple une vidéo avec des contrôles, dont le son est coupé, qui jouera en boucle et dont la taille a été limitée à 320x240 pixels. 1. Les vidéos d exemple sont celles du film Big Buck Bunny, un film sous licence Creative Commons. 8

2.3 Contrôler (simplement) le média html hl_lines="1" <video width="320" height="240" controls muted loop> <source src="chemin/vers/masource.mp4" type="video/mp4"> <source src="chemin/vers/masou type="video/ogg"> <source src="chemin/vers/masource.webm" type="video/webm"> </video> ->!(https ://jsfiddle.net/tmjosu22/4/) <- Vous savez maintenant afficher une vidéo ou jouer un son! 2.3.2 Encore plus loin, des sous-titres pour les vidéos Dans notre monde moderne et international, il arrive que les sous-titres puissent être nécessaires pour offrir le contenu à un plus grand public. Et c est là que la balise <track> intervient. Placée dans une balise vidéo, cette dernière proposera des sous-titres au lecteur. La balise track a besoin des informations suivantes : src : la source (relative ou absolue) du fichier de sous-titres (au format WebVTT.vtt (WEB Video Text Track)) ; kind="subtitles" : pour préciser que l on parle de sous-titres ; srclang : le code international de la langue (en, de, fr ) ; label : le nom littéral de la piste de sous-titres. Par exemple : html hl_lines="4-5" <video controls> <source src="ma-super-video.mp4" type="video/mp4"> <source src="ma-super-video.ogg" type="video/ogg"> <track src="subtitles_en.vtt" kind="subtitles" srclang="en" label="english"> <track src="subtitles_fr.vtt" kind="subtitles" srclang="fr" label="francais"> </video> [[a]] À l heure d écriture de ce tutoriel, cette balise est encore très peu supportée dans les navigateurs. 2.3.3 Fallback Si l utilisateur qui visite votre site possède un navigateur un peu rétro ou incomplet vis-à-vis des standards du Web, il serait de bon ton de l avertir que le contenu ne peut être affiché plutôt que de le laisser attendre indéfiniment un média qui n arrivera jamais. Pour cela, il suffit tout simplement d ajouter du HTML dans la balise média concernée. Si le navigateur ne sait pas interpréter la balise vidéo/audio, alors il ignorera les balises et affichera notre fallback. Sinon ce contenu est ignoré car la balise est correctement interprétée. html hl_lines= 7-9 <!-- Ce paragraphe ne s'affichera que dans le cas où le navigateur ne sait pas interpréter la balise vidéo --> <p class="alert"> Votre navigateur ne supporte pas la balise vidéo! Mettez-vous à jour! </p> 9

2 Les balises audio et vidéo [[i]] Plutôt que d afficher du texte, vous pouvez très bien aussi afficher un conteneur Flash en solution de secours pour jouer la vidéo. L idéal est même de proposer une alternative ET les liens de téléchargement de la vidéo, si la licence de distribution de cette dernière le permet. 10

3 Interagir un peu plus avec les médias Lorsque l on a un média, on peut avoir envie d interagir un peu plus avec que simplement afficher les contrôles de base. Nous ferons alors appel à JavaScript pour rentrer dans les entrailles du lecteur Imaginons que nous voulions proposer un lecteur sans contrôles natifs, mais uniquement avec nos boutons HTML que nous pourrions styliser via du CSS. Il faudrait alors que ces boutons interagissent avec la vidéo correctement. Admettons que nous voulions ajouter les contrôles suivants : Lecture : lit la vidéo ; Pause : met la vidéo en pause ; Stop : arrête la vidéo ; -10s : recule la vidéo de 10 secondes ; +10s : avance la vidéo de 10 secondes ; 3.0.1 Structure de base Voici la structure de base que nous allons respecter : <video id="mavideo" controls> <source src="http://clips.vorwaerts-gmbh.de/vfe_html5.mp4" type="video/mp4"> <source src="http://clips.vorwaerts-gmbh.de/vfe.webm" type="video/webm"> <source src="http://clips.vorwaerts-gmbh.de/vfe.ogv" type="video/ogg"> <p class="alert"> Votre navigateur ne supporte pas la balise vidéo! Mettez-vous à jour! </p> </video> <div class="controles" hidden> </div> function lecture() { // Lit la vidéo function pause() { // Met la vidéo en pause function stop() { // Arrête la vidéo 11

3 Interagir un peu plus avec les médias function avancer(duree) { // Avance de 'duree' secondes function reculer(duree) { // Recule de 'duree' secondes function creerboutons() { // Crée les boutons de gestion du lecteur ->!(https ://jsfiddle.net/tmjosu22/8/) <- 3.0.2 Mettre nos contrôleurs Comme vous pouvez le voir dans le squelette précédent, pour l instant, aucun bouton personnalisé n est présent sur notre page et la vidéo possède l interface par défaut. En effet, nous allons créer les boutons dynamiquement en JavaScript dans la fonction creerboutons() qui sera exécutée à la fin du chargement de la page. De cette manière, un utilisateur désactivant le JavaScript pourra tout de même utiliser le navigateur avec l interface standard. Voici comment nous allons créer nos boutons. Je compte sur vous pour comprendre sans explication, juste avec les commentaires! ;) var lecteur; function creerboutons() { // Crée les boutons de gestion du lecteur var btnlecture = document.createelement("button"); var btnpause = document.createelement("button"); var btnstop = document.createelement("button"); var btnreculer = document.createelement("button"); var btnavancer = document.createelement("button"); var controlesbox = document.getelementbyid("controles"); lecteur = document.getelementbyid("mavideo"); // Ajoute un peu de texte btnlecture.textcontent = "Lecture" ; btnpause.textcontent = "Pause" ; btnstop.textcontent = "Stop" ; btnreculer.textcontent = "-10s" ; btnavancer.textcontent = "+10s" ; // Ajoute les boutons à l'interface 12

controlesbox.appendchild(btnlecture); controlesbox.appendchild(btnpause); controlesbox.appendchild(btnstop); controlesbox.appendchild(btnreculer); controlesbox.appendchild(btnavancer); // Lie les fonctions aux boutons btnlecture.addeventlistener("click", lecture, false); btnpause.addeventlistener("click", pause, false); btnstop.addeventlistener("click", stop, false); btnreculer.addeventlistener("click", function(){reculer(10), false); btnavancer.addeventlistener("click", function(){avancer(10), false); // Affiche les nouveaux boutons et supprime l'interface originale controlesbox.removeattribute("hidden"); lecteur.removeattribute("controls"); // Crée les boutons lorsque le DOM est chargé document.addeventlistener('domcontentloaded', creerboutons, false); ->!(https ://jsfiddle.net/tmjosu22/11/) <- 3.0.3 Interagir avec la vidéo Maintenant que nous avons un squelette, nous allons devoir faire appel aux propriétés de l objet vidéo pour interagir avec (son id est «mavideo»). Pour cela, on ira chercher dans la référence de l élément : HTMLMediaElement. Vous y trouverez les attributs accessibles (dont certains ont été vus plus tôt) ainsi que les méthodes que nous pouvons appeler. Ainsi nous trouverons par exemple les éléments suivants : play() : pour lire la vidéo ; pause() : pour la mettre en pause ; currenttime : attribut représentant le minutage actuel de la vidéo (position dans la vidéo). On va alors pouvoir implémenter les méthodes JavaScript proposées plus tôt! function lecture() { // Lit la vidéo lecteur.play(); function pause() { // Met la vidéo en pause lecteur.pause(); 13

3 Interagir un peu plus avec les médias function stop() { // Arrête la vidéo // On met en pause lecteur.pause(); // Et on se remet au départ lecteur.currenttime = 0 ; function avancer(duree) { // Avance de 'duree' secondes // On parse en entier pour être sûr d'avoir un nombre lecteur.currenttime += parseint(duree); function reculer(duree) { // Recule de 'duree' secondes // On parse en entier pour être sûr d'avoir un nombre lecteur.currenttime -= parseint(duree); ->!(https ://jsfiddle.net/tmjosu22/15/) <- 14

4 TP : Faire votre propre lecteur multimédia 4.1 Consigne En guise d exercice, je vous propose de continuer l interface que nous avons commencée en rajoutant les boutons suivants. 4.1.1 Niveau 1 Répéter : checkbox qui fera répéter la vidéo lorsqu elle se termine si elle est cochée ; Avancer/Reculer de xx secondes : un input de votre choix pour sélectionner une valeur et deux boutons pour avancer ou reculer. 4.1.2 Niveau 2 Pour les plus forts : Une barre de progression pour afficher où la vidéo est rendue dans sa lecture ; Un input de type range pour : afficher où la vidéo est rendue ; sélectionner un endroit où aller. 4.1.3 Niveau 3 Prouvez que vous être le maître des technos Web, rajoutez une belle couche de CSS par dessus tout cela! -> Voila, ça fera de quoi vous occuper :pirate :! BON COURAGE <- 4.2 Solution Voici un exemple simple de solution «Niveau 1» : ->!(https ://jsfiddle.net/tmjosu22/16/) 15

4 TP : Faire votre propre lecteur multimédia <- Et voila une deuxième démo mettant plus l accent sur le style que sur les fonctions. ->!(https ://jsfiddle.net/tmjosu22/20/) <- 16

5 Conclusion S il est encore nécessaire de montrer l intérêt des balises modernes du HTML5, sachez par exemple que YouTube, le célèbre hébergeur de vidéos, a décidé d arrêter complètement l utilisation de Flash pour ses contenus. En effet, maintenant, toutes les vidéos passent par l utilisation de la balise <video>! Un gros merci à Dominus Carnufex pour avoir pris le temps et le courage de venir relire et corriger toutes mes monstrueuses fautes! Merci aussi à viki53 pour ses conseils sur le JavaScript et ses idées. 17