Regarder des extraits du Daily Show de John Stewart sous Linux

Dim 06 février 2005

Depuis quelques mois déjà, grâce à différents rebonds dans ma blogosphère, je suis un ardent spectateurs des meilleurs moments du Daily Show, émission satirique, qui ressemblerait à peu près au Vrai Journal de Zéro, sauf que ce serait tout le temps drôle.
Le problème, c'est que depuis la fin de l'année dernière, les extraits disponibles ne sont qu'au format WMV (yuck), donc, encapsulés dans la page dans un format qu'aucun plug-in que je connaisse ne sache lire sous Ubuntu. Ouais, ça me ferait bien chier que Microsoft ait pondu un plug-in Windows Media Player pour Linux...
Me voilà donc avec une page agrémentée d'un carré blanc supposé contenir une vidéo tordante, que je ne peux voir ailleurs que sous Windows.
Et pire : depuis peu, quand je lance la page sous Firefox (sous Windows), j'ai un crash monumental du navigateur, qui disparaît dans le trou noir de la mémoire. Obligé (et je pèse mes mots) d'utiliser IE sous Windows pour voir ces vidéos.
Hor-reur.

Mairdalor.
Je me mets à potasser un peu la doc de mplayer et mencoder. Je vois que mencoder est tout à fait capable d'encoder un flux audio ou vidéo dans un format lisible sur n'importe quelle plateforme. Alors, ben dis-donc... Comme mplayer est capable de lire les vidéos WMV et les flux audio, il doit vraisemblablement être capable de lire (et donc mencoder d'encoder) les vidéos du Daily Show.

Retrouver le flux vidéo

Tout d'abord, il faut aller à la page d'accueil du Daily Show.
On clique sur la dernière "headline" (en l'occurrence, le compte-rendu du Discours sur l'Etat de l'Union de Deubeuliou). S'ouvre un pop-up contenant moult graphismes et un gros carré blanc, marque patente du manque cruel de plug-in capable de lire la vidéo streamée.
Clic-droit -> "View Page Source".
Utilisation de la fonction (magique ?) de recherche dans le texte, puisque je tape les lettres "w", "m" et "v" et que je le retrouve exactement là où il faut. J'ai sous les yeux l'adresse du flux vidéo de type ASX qui doit alimenter le gros carré blanc :
http://www.comedycentral.com/mp/videoswitcher.jhtml?show=ds&reposid=/multimedia/tds/headlines/10019.html&clip=dailyshow/headlines/10019_headline.wmv&mswmext=.asx
C'est un peu alambiqué, mais en fait, c'est l'url d'une page dynamique dont la seule fonction est de renvoyer un flux multimédia sous la forme d'un formalise XMLisant.
Note : il est inutile d'employer wget pour récupérer ce fichier XML, le résultat ne contient pas ce qui m'intéresse par la suite. Me demande pas pourquoi.
Donc, on doit copier-coller cette URL dans la barre d'adresse d'un nouvel onglet, par exemple, et, étant d'un type inconnu (XML, mais sans sa déclaration, voilà comment Microsoft maltraite les standards), on peut l'enregistrer sur le disque dur.
Ce fichier texte sous format XMLoïde contient deux entrées (entry) dont la référence est une adresse commençant par mms://...
La première a comme nom de fichier : mastercard_career.wmv. Je vois très bien ce que c'est, c'est la pub pour Mastercard qu'on voit avant le best-of du Daily Show.
La seconde est donc naturellement le fichier qu'on veut capturer.

Capturer le flux

Le "protocole" mms est inconnu de Mozilla et de wget. Par contre, mplayer a l'air de bien comprendre ce dont il s'agit.
$ mplayer mms://a386.v99506.c9950.g.vm.akamaistream.net/7/386/9950/v001/comedystor.download.akamai.com/9951/dailyshow/headlines/10019_headline.wmv
Cette commande commence la lecture du flux vidéo, haute qualité. Youhou !... Enfin, pour quelques secondes. L'inconvénient de mplayer, c'est qu'il remplit un tout petit cache par défaut (1024 Ko) avant de lancer la lecture. Et que ce cache fond comme neige au soleil, et la vidéo se met à saccader très rapidement (du moins, sur la connexion ADSL 128kB de chez mon paternel). A moins d'augmenter considérablement la taille du cache (argument -cache-min de mplayer), la vidéo est vouée au tremblement parkinsonien à très brève échéance. Dommage.

Doit y avoir moyen de mieux faire...

mencoder permet d'encoder les flux audio et/ou vidéos que mplayer sait lire. Donc :
$ mencoder "monadresseàlacon" -aoc pcm -aov raw
Cette commande va encoder à la volée la vidéo du Daily Show, sans compression ni pour le son, ni pourla vidéo. Ca prendra beaucoup de place sur le disque dur, je sais, mais tu peux réencoder "à tête reposée" la vidéo sans problème après ça. J'ai déjà vu des écrans freezer pour bien moins que ça.
Tout ça part dans un fichier appelé "test.avi". C'est le nom par défaut. Rassure-toi, on peut le changer, en utilisant la fonction -o pour donner un nom au fichier de sortie (output).
L'encodage dure "un certain temps", en fonction de la vitesse de ta connexion et celle de ton processeur. Assure-toi d'avoir autre chose à faire, du genre "faire une donation à un projet open-source" ou "trouver un moyen de faire en sorte que le ballon ne glisse pas des mains des joueurs de rugby Français" ou encore "me faire plaisir". Si tu es une accorte jeune fille, je suis sûr que tu trouveras comment faire.

Le résultat une donc un fichier AVI d'environ 1,3Go. Evidemment, se prendre la tête vingt minutes simplement pour visionner une vidéo d'environ cinq minutes, ça peut paraître légèrement stupide. Mais au moins, je ne suis plus obligé d'utiliser IE et Windows pour la voir, cette putain de vidéo.
Je suis libre. J'ai le choix.

Quand j'aurai assez progressé en Python, je fabriquerai un outil me permettant de faire tout ça sans me prendre la tête.