Du neuf dans la video avec HTML5
21 janv. 2010
Par Strider - General - Lien permanent
J'écris ce billet depuis Firefox 3.6, fraichement sorti et qui possède quelques nouveautés et améliorations intéressantes. Ce qui a retenu mon attention dans les Release Notes, c'est le support de la video plein écran. Enfin ! Le format Flash n'a désormais plus aucun avantage par rapport au HTML 5 ! Coté performances, aucune amélioration, la lecture d'un OGG sur Firefox mettra a genoux vos anciennes machines.
Ceux qui ont Firefox 3.6 pourront tester avec la vidéo ci dessous (Daniel Holbach présentant les bases du packaging pour Ubuntu).
Tout aussi récemment, YouTube a décidé de suivre son petit frère DailyMotion et de se mettre a la balise <video>. Le problème, et pas des moindres, est que Youtube ne stocke pas ses vidéos au format OGG Theora mais en mp4 ou x264, du coup Youtube en HTML5 n'est compatible qu'avec Google Chrome. L'avenir nous dira si Firefox supportera davantage de codecs et/ou Google va penser à convertir les vidéos YouTube en OGG Theora.
Dernière nouvelle sur le HTML 5, c'est le lancement de TinyOgg, un projet soutenu par la FSF et proposant de convertir n'importe quelle video YouTube en Ogg/Theora. Bon, le problème c'est que justement ça ne supporte *que* YouTube, mais d'autres plateformes de partage video seront bientôt supportées. D'autres, d'accord mais pas toutes, c'est pourquoi j'ai proposé a Osama Khalid, créateur de TinyOgg, une méthode universelle pour récupérer les vidéos de n'importe quel site.
Le principe est pour l'instant tout a fait théorique mais s'inspire de la méthode que j'utilise pour trouver un lien vers une vidéo flv. Bien sur il existe des extensions pour Firefox telles que DownloadHelper, mais avoir une URL, cela permet de télécharger sur un serveur avec wget.
Voici la méthode manuelle : Je me rends sur un site proposant une vidéo en Flash et je lance la capture des paquets de mon réseau sur Wireshark. Je lance la lecture de la vidéo et repère une trame susceptible d'être la requète ou le swf demande le flv au serveur. Une fois le flv trouvé, je colle le champ Host avec la requète GET et je donne ça a wget qui télécharge la vidéo.
Ce hack est bien sympa, mais le but est d'automatiser toute cette procedure pour qu'un utilisateur puisse coller une URL, n'importe quelle URL (tant que le player n'utilise pas le protocole fermé RTMP), et récupérer son .ogg à la fin.
Dans la théorie, cela donne :
- Xvfb installé sur le serveur pour permettre le lancement d'applications graphiques sans avoir besoin d'écran.
- Firefox et le plugin Adobe Flash installés sur ce serveur
- Un script python envoyant des XEvents via python-xlib pour faire des faux clics de souris, au cas ou un appui sur Play est nécessaire
- Un sniffer (wireshark ou tcpdump) configuré pour capturer toutes les urls se terminant par .flv
- mencoder ou ffmpeg2theora pour la conversion
Avis au experts du réseau, si vous souhaitez faire une grosse contribution aux formats ouverts, postez dans les commentaires la commande magique a base de tcpdump, wireshark ou tout autre sniffer pour récupérer les url des vidéos .flv.
Commentaires
«la lecture d'un OGG sur Firefox mettra a genoux vos anciennes machines. »
Ha j'ai pas rêvé ! Depuis FF3.5 et que j'utilise la balise, j'ai bien remarqué des performance moins bonne en lecture sur un netbook, alors que ça passe sans soucis sur des machines de bureau récente…
MaKoToDommage, quand on reproche à Flash d'être lourd…
Cependant ça ne m'empêchera pas d'utiliser et promouvoir la balise et Theora !!
Car flash met à genoux «tout mon netbook»… ça rame de partout quoi…, même sans lire la vidéo, alors qu'avec la balise vidéo, c'est juste en lecture quelques saccades et désynchro son/images, y'a Que la vidéo qui rame !
Si ça continue comme ça, les netbooks de première génération ne seront bientôt déjà plus utilisables pour surfer normalement… merci Adobe X_X
Oui, j'aurais pu dire anciennes machines OU netbooks ;)
striderLe problème est que tout le décodage de la vidéo se fait par le processeur alors que les lecteurs classiques tels que vlc ou mplayer tirent parti de la carte graphique.
Des que les navigateurs sauront tirer parti de l'accélération matérielle, ce sera parfait :)
comment se fait-il que youtube ne veut pas m'afficher des vidéos en html5 alors que j'ai firefox 3.5 ???(linux).
Ils disent:
"Right now we support browsers that support both the tag in HTML5 and the h.264 video codec. These include:
* Google Chrome
* Apple Safari (version 4+)
* Microsoft Internet Explorer with Chrome Frame installed
"
bizarre non?
clemPour la capture des URL .flv, les outils basés sur libpcap (tcpdump et cie.) sont vraiment trop compliqués.
J'ai trouvé un outil très sympathique : urlsnarf ( dans le paquet dsniff ) qui permet de faire ça très simplement :
sudo urlsnarf -i eth0 | grep .flv
Et c'est gagné :)
striderDu coup je vais pouvoir avancer sur le prototype dont je parlais et l'envoyer à Osama Khalid.
@clem , oui c'est ce que j'ai écris dans mon billet. Youtube stocke ses vidéos en h.264, un codec non libre et qui n'est pas supporté sur Firefox 3.5 ou 3.6
strideroups excuse moi j'ai lu beaucoup trop vite .... :-S
clemsinon y a plus simple pour la capture de flv ;)
http://www.pcinpact.com/actu/news/5...
G-romPlus simple, et plus fermé surtout.
striderLe site en question a exactement les mêmes problèmes que TinyOgg pour l'instant, il ne supporte que les sites que le développeur veux bien supporter (Youtube, GoogleVideo).
Utiliser une méthode de web scrapping pour récupérer un lien vers une vidéo demande un effort pour chaque site de partage et jamais personne ne pourra se vanter de tous les supporter.
En se plaçant a un niveau plus bas, au niveau des trames réseau, on fait abstraction de la page web et cela offre une solution universelle.
Au milieu de ton article je vois un grand carré noir et ça fait ramer Chromium.
>Le problème est que tout le décodage de la vidéo se fait par le >processeur alors que les lecteurs classiques tels que vlc ou mplayer >tirent parti de la carte graphique.
Non
Le décodage marche uniquement pour le MPEG2, sur les Intel. Et encore, je ne suis pas sûr que tous les lecteurs l'utilisent. Ensuite le moteur mplayer sait utiliser le vdpau de Nvidia, qui peut lire mpeg2, h264 et vc-1. Mais c'est tout. A ma connaissance VLC ne peut pas.
Sur Windows, il y a WMP et Media Player classic qui savent utiliser le GPU pour lire des vidéos. Ainsi que les lecteurs bluray style powerdvd et compagnie. Pour Media player classic, il ne semble pas y avoir de limite de codec (ça marche avec tout).
C'est prévu dans Linux (projet Galium si je dis pas de bêtises) et ce sera utile pour les petits processeurs style Atom.
Le flashplugin commençait à exploiter le GPU (dans sa version beta 10.1) sauf sur Linux évidemment... Mais heureusement on va se débarrasser de cette daube, si dailymotion et youtube le larguent, il ne reste plus qu'à attendre que Megavideo fasse de même, et ensuite plus personne n'en aura besoin.
J'avais moi aussi remarqué que le Theora dans le navigateur ça ramait pas mal. Et pourtant quand on le lit dans Totem, ça passe bien. Alors où est-ce que ça coince? Dans le navigateur?
BrakbabordOk, je me suis mal exprimé. Par accélération matérielle je ne parle pas forcément de VDPAU ou de décodage MPEG2 matériel mais de la façon dont la vidéo est affichée sur l'écran. Tous les lecteurs (VLC, Mplayer, Totem) utilisent un module de sortie pour l'affichage. Cela peut être Xv, OpenGL, SDL ou bien encore DirectShow sur Windows (je crois que c'est ça, je suis pas expert en Windows).
striderFirefox est sensé tourner partout, absolument partout, il n'assume pas qu'OpenGL, X11 ou DirectX soit présent sur la machine. Tout l'affichage se fait de façon logicielle en utilisant je ne sais quel moteur de rendu et ne fait appel a aucune bibliothèque externe.
Cela explique pourquoi un Ogg lu sur Firefox est bien plus gourmand que lorsqu'on le lit avec Totem ou VLC.
sinon on peut toujours utiliser le fait que les flv chargés via une page de firefox vont se mettre dans /tmp non ?
poukiC'est vrai mais ça impose de laisser le plugin Flash s'occuper du téléchargement, ce qui oblige de vraiment le laisser tourner pendant toute la durée de la vidéo.
striderEn règle générale je trouve le chargement d'un vidéo moins fiable avec Flash qu'avec wget