Lecteur Flash compatible avec l'API video de HTML 5
Pour reproduire l'API Javascript de l'élément video HTML 5, il faut 2 fichiers:
Le Flash a besoin de 2 paramètres en FlashVars :
- listener qui donne l'objet javascript écouteur des évènements flash
- src qui est l'URL du fichier video en FLV
Exemple
Il faut mettre le flash à l'intérieur de l'élément video comme ceci:
<!DOCTYPE html> <html> <head> <title>Exemple</title> <script language="javascript" src="html5video_flash.js"></script> </head> <body> <video id="myVideo"> <source src="fichier.ogg" type="video/ogg" codec="theora, vorbis"/> <object id="myVideoFlash" type="application/x-shockwave-flash" data="player_flv_html5.swf" width="320" height="240"> <param name="movie" value="player_flv_html5.swf"/> <param name="AllowScriptAccess" value="always"/> <param name="FlashVars" value="listener=video&src=fichier.flv"/> <p>Contenu alternatif.</p> </object> </video> </body> </html>
Voici un exemple plus complet : http://resources.neolao.com/download/flash/components/html5video/index.html
API
Pour accéder à l'API, il faut instancier un objet video comme ceci:
var flash = document.getElementById("myVideoFlash"); var video = new FlashFLVPlayer(flash);
Dans les paramètres FlashVars, on doit indiquer cette variable video en listener.
Méthodes
| Nom | Description |
|---|---|
| play | Lancer la lecture de la vidéo |
| pause | Faire pause |
Propriétés
Ces propriétés sont accessibles directement sur l'instance Javascript créée.
| Nom | Type | Accès | Description |
|---|---|---|---|
| currentTime | Nombre | Lecture/Ecriture | Le temps écoulé de la vidéo, en seconde |
| duration | Nombre | Lecture seule | La durée de la vidéo, en seconde |
| error | Objet | Lecture seule | Lorsqu'une erreur survient, cette objet est rempli |
| networkState | Nombre | Lecture seule | L'état de la connexion |
| paused | Booléen | Lecture seule | Indique que la vidéo est en pause |
| readyState | Nombre | Lecture seule | L'état de la disponibilité des données |
| seeking | Booléen | Lecture seule | Indique qu'il y a un déplacement dans la vidéo |
| videoHeight | Nombre | Lecture seule | La hauteur d'origine de la vidéo |
| videoWidth | Nombre | Lecture seule | La largeur d'origine de la vidéo |
| volume | Nombre | Lecture/Ecriture | Le volume compris entre 0 et 1 |
Evènements
On peut écouter n'importe quel évènement en faisant:
var flash = document.getElementById("myVideoFlash"); var video = new FlashFLVPlayer(flash); var playHandler = function(event) { alert("Début de la lecture"); }; video.addEventListener("play", playHandler);
| Nom | Description |
|---|---|
| durationchange | La durée de la vidéo a changé |
| ended | La vidéo est terminée |
| error | Une erreur est survenue |
| load | Le chargement de la vidéo est terminée |
| loadedmetadata | Les informations sont chargées |
| loadstart | Le début du chargement |
| play | Lancement de la lecture |
| playing | La lecture a commencé |
| pause | La vidéo est en pause |
| seeked | La vidéo a fini son déplacement |
| timeupdate | Le temps écoulé est mis à jour |
| volumechange | Le volume est mis à jour |
L'évènement timeupdate n'est pas exécuté en continu. Je me suis calqué sur le comportement de Safari pour lancer cet évènement. Cependant, la propriété currentTime est mis à jour plus rapidement.
Changelog
La version actuelle est 0.1.0
Sources
Les sources Flash sont sur google code.