Sauvegarder un documentaire en deux manipulations simples

Ce billet répond à une question soulevée par quelques étudiants dans un cours de méthodes de travail numérique, mais je me dis que certains lecteurs de ce blog peuvent aussi avoir l’utilité des trucs et astuces ci-dessous. Et puis l’enchaînement avec le billet précédent me plaît.

Supposons que vous ayez visionné l’excellent documentaire « Libye, anatomie d’un crime », et que vous puissiez en avoir besoin à l’avenir, pour citation dans un exposé, dans un cours, ou dans toute autre présentation qui relèverait de l’exception pédagogique1, et pour laquelle vous souhaiteriez, par exemple, utiliser des captures d’écran du documentaire.

Si vous souhaitez conserver une copie du documentaire, c’est techniquement toujours possible : votre navigateur Web doit pouvoir lire cette copie pour vous montrer une version « streaming » (flux) du documentaire. La seule différence entre une copie temporaire (streaming) et une copie permanente est l’emplacement mémoire où vous allez stocker cette copie, et sa persistance.

Pour sauvegarder cette copie, il va vous falloir quelques outils :

  • Un navigateur Web qui vous permette de repérer facilement le fichier de streaming ;
  • Un terminal qui puisse exécuter quelques commandes simples ;
  • Et de quoi lire le résultat final tout en prenant des captures d’écran.

La dernière étape est la plus simple, et bien que tout le monde semble utiliser VLC (création française, cocorico) pour lire de la vidéo, je préfère de très loin mpv, qui beaucoup plus souple (configurable) et que je trouve plus élégant.

1. Identifier le fichier de streaming

Pour la première étape, je conseille Google Chrome avec l’extension Video DownloadHelper afin de localiser le fichier de streaming au format .m3u8, c’est-à-dire la version Unicode / UTF-8 du standard M3U, que l’on utilise souvent en multimédia.

Lancez la vidéo dans votre navigateur afin d’activer la lecture du stream : l’extension va automatiquement détecter le flux, que vous pourriez aussi (mais plus laborieusement) localiser en inspectant, à l’aide de ses Developer Tools, les ressources chargées par le navigateur.

En cliquant sur l’extension (en haut à droite, en bleu), vous aurez plusieurs choix de streams, en fonction de la qualité du flux que vous souhaitez sauvegarder. Passez à la prochaine étape en cliquant sur la flèche entourée en rouge, en choisissant une bonne résolution vidéo :

Contentez-vous, ensuite, de copier l’adresse du fichier .m3u8, afin d’éviter que l’extension ne vous demande d’utiliser sa propre solution de sauvegarde du flux (ce qui se produira si vous demandez à télécharger le fichier plutôt qu’à simplement en copier l’adresse) :

À ce stade, votre presse-papiers contient une adresse de type

https://arteptweb-vh.akamaihd.net/ [...] 6JNR.smil/index_3_av.m3u8

… où le serveur appartient à un CDN assez connu, Akamai, et où l’on retrouve bien l’extension m3u8 en fin d’adresse ; notez aussi le protocole/langage SMIL, également courant en multimedia.

Si vous téléchargez et inspectez le contenu du fichier .m3u8, vous y trouverez les adresses de tous les fichiers .ts (MPEG-TS) que le stream mobilise pour faire défiler la vidéo ; ce sont ces fichiers que l’on va télécharger, puis fusionner en un seul fichier final :

(Note : personnellement, à ce stade, je désactive l’extension Video DownloadHelper dans mon navigateur, afin d’éviter qu’elle ne consomme de la mémoire – et n’analyse le contenu des pages Web que je consulte… – lorsque je ne m’en sers pas.)

2. Passer le stream à ffmpeg

Il va à présent vous falloir télécharger la librairie ffmpeg, qui permet de faire tout et n’importe quoi avec des fichiers vidéo.

L’installation et l’utilisation de ffmpeg demandent de savoir utiliser un terminal ; pour installer la librairie sur macOS, vous aurez préalablement installé Homebrew, et utiliserez cette commande2 :

brew install ffmpeg

La librairie ffmpeg permet notamment de « concaténer » (de chaîner, de joindre, de fusionner) des fichiers vidéo. On pourrait télécharger soi-même les fichiers vidéo listés dans le fichier .m3u8, puis les « chaîner » à la main3 ou avec ffmpeg. Mais il y a encore plus simple :

ffmpeg -y -loglevel verbose -i "https://arteptweb-vh.akamaihd.net/ [...] 6JNR.smil/index_3_av.m3u8" -c copy -f mpegts final.mp4

… où l’adresse (tronquée) entre guillemets est un simple copier-coller de celle que vous avez copiée à l’étape précédente, et où le résultat final (le documentaire en entier) s’appelle final.mp4, car on souhaite convertir le résultat au format MPEG-4, lisible avec n’importe quel logiciel de lecture vidéo qui pourrait se trouver sur l’ordinateur de votre salle de cours.

La commande va télécharger l’intégralité des fichiers vidéo listés dans le fichier .m3u8, avant de les convertir au format souhaité. Vous risquez de voir s’afficher des avertissements sans importance au passage — ne vous inquiétez pas, car à moins que vous n’ayez plus d’espace disque ou autre scénario relativement improbable, tout va bien se passer :

Votre documentaire est prêt à l’emploi. Bon visionnage !

  1. J’insiste : il s’agit d’une exception accordée par le droit français, ce qui signifie que tout autre usage doit être accompagné d’une démarche visant à comprendre si des coûts de (re)diffusion peuvent s’appliquer. []
  2. Sur Windows, vous ferez ce que vous pourrez avec les moyens du bord, que je connais mal, et sur Linux, vous installerez vous-même la librairie, en fonction de votre distribution. []
  3. Il suffirait d’utiliser quelques expressions régulières sur le fichier .m3u8 pour en extraire les adresses des fichiers vidéo, de tous les télécharger, puis de les concaténer. []