Sommaire
- Description du besoin
- Élements de solution
- Partie graphique : Xephyr
- Partie son : PiweWire
- Lecture vidéo
- Ffmpeg
- Post-production
La copie privée a l'honneur de figurer parmi les sujets qui me tiennent à cœur. Concrètement, dans la mesure où, comme tout le monde en France je paie pour bénéficier de ce droit, je ne me prive pas de télécharger ce qui est disponible sur YouTube, et d'enregistrer aussi bien les CD et DVD que j'emprunte à la bibliothèque de ma ville, ainsi que les films en ligne dont je bénéficie grâce à cette même bibliothèque.
Pour ceux que cela intéresserait, je détaillerai un peu plus les aspects légaux de cette pratique dans un commentaire dédié. Ce journal a plutôt vocation à présenter ma technique d'enregistrement de vidéo à la demande DRMisée.
Description du besoin
J'ai donc accès à un film, en l'occurrence sur Arte VOD, mais ça pourrait être sur n'importe quelle plate-forme. Si les distributeurs perçoivent la redevance pour copie privée, en revanche ils n'apprécient pas du tout que leurs utilisateurs exercent le droit correspondant. Les vidéos sont donc verrouillées, de sorte qu'on ne peut pas simplement les télécharger. Même VideoDownloadHelper échoue à cela. En revanche, la lecture se déroule sans problème avec Firefox équipe d'un module Widevine, ou un truc comme ça. Bref, ça marche, du coup on peut au moins enregistrer l'image et le son, le seul inconvénient étant que ça implique de recoder les flux.
Ajoutons quelques critères supplémentaires :
- Pendant que ça enregistre, je voudrais pouvoir faire autre chose avec mon ordinateur. Y compris le laisser passer en verrouillage d'écran, sans que ça interrompe la capture vidéo.
- Je voudrais aussi que les éventuels sons émis par mes autres activités ne viennent pas polluer la capture de la bande son.
- Tant qu'à faire, j'aimerais faire une capture vidéo sans la moindre interpolation, c'est à dire que si la vidéo streamée fait 1280×720, je voudrais l'enregistrer avec exactement cette résolution.
Élements de solution
Xephyr, PulseAudio ou PipeWire module-null-sink et ffmpeg !
Xephyr est un serveur X11 dont l'écran est une fenêtre dans votre affichage X11 actuel. Cela va permettre d'y lancer la lecture vidéo et de capturer cet affichage. À noter qu'on peut très facilement lancer de façon semblable un compositeur Wayland dans une fenêtre, mais que l'enregistrement d'un affichage Wayland est moins bien supporté : je m'en tiendrai donc à Xephyr.
PulseAudio est un serveur de son ; PipeWire est son successeur, qui l'a désormais remplacé sur la plupart des distributions. Parmi leurs sorties sons, il y a notamment un module-null-sink, qui absorbe et jette le son qu'on lui envoie tout en fournissant un « moniteur », c'est à dire une entrée sur laquelle on peut récupérer – et enregistrer – tout ce qu'il reçoit. À noter qu'avec PipeWire, ce genre d'artifice n'est même pas nécessaire puisqu'il permet carrément d'enregistrer directement le son émis par un logiciel indépendamment de toute sortie son. Sauf que l'enregistrement PipeWire, c'est également moins bien supporté : je m'en tiendrai donc à la technique module-null-sink.
Partie graphique : Xephyr
Ça se lance comme ça :
Xephyr :2 -screen 1280x720
Bon, là, vous le lancez sans aucun client dedans. Ça suffirait pour y lancer un navigateur, mais ça ne va pas permettre de lancer une lecture en plein écran. Il faut un gestionnaire de fenêtres : personnellement, j'ai choisi i3, que j'utilisais avant de passer à Wayland. Mais vous pouvez lancer un Gnome entier si ça vous chante :
xinit /usr/bin/i3 -- /usr/bin/Xephyr :2 -screen 1280x720
On peut aussi ajouter quelques extensions à Xephyr, par exemple pour pouvoir régler la disposition du clavier, permettre le redimensionnement de sa fenêtre-écran, de quoi le faire avec XRandR, activer la sécurité X11 (éviter que n'importe qui sur votre ordinateur puisse faire n'importe quoi sur ce Xephyr). On pourra en discuter en commentaire.
Partie son : PiweWire
Il y a un client PipeWire qui devrait permettre de charger ou décharger un module. Sauf que la peinture n'est visiblement pas encore sèche, ça ne marche pas :
pw-cli
>> load-module null-sink
Error: "Could not load module"
>> load-module module-null-sink
Error: "Could not load module"
>> load-module pulseaudio-module-null-sink
Error: "Could not load module"
>> unload-module
Error: "Command "unload-module" not yet implemented"
Heureusement, PipeWire est largement compatible avec le protocole de PulseAudio, en fait la plupart des usages utilisent cette compatibilité. Le chargement et déchargement de modules aussi, visiblement. En tout cas, ça marche :
pactl load-module module-null-sink
536870913
Notez le numéro que cela vous a renvoyé : c'est l'identifiant du module chargé, qui servira pour le décharger ensuite. Enfin, si vous souhaitez le décharger : personnellement, je ne vois pas l'intérêt, j'aurais plutôt tendance à le laisser en permanence, ça peut toujours servir.
Pour info, ça a demandé au serveur PulseAudio, qui est en fait un PipeWire, de charger ce module. C'est donc un module PipeWire qui vient d'être chargé. Mais peu importe, il est d'ores et déjà utilisable, c'est à dire que n'importe quel logiciel produisant du son peut désormais l'envoyer vers cette sortie virtuelle qui ne fait rien.
Lecture vidéo
Maintenant, pour enregistrer une vidéo à la demande, il va falloir la lancer. Vous pouvez lancer un navigateur depuis l'intérieur de votre Xephyr, ou depuis l'extérieur, ainsi :
DISPLAY=:2 firefox
Firefox est un peu casse-pied avec sa mutualisation d'exécution, concrètement, si vous avez déjà un Firefox lancé, vous n'allez pas pouvoir lancer une nouvelle fenêtre dans ce nouvel affichage X11. Il faut passer par un profil, et si vous faites ça, vous perdez au passage la possibilité d'ouvrir des liens depuis d'autres applications. Bref, personnellement, je lance plutôt un Chromium pour l'occasion, histoire qu'il n'interfère pas avec mon usage courant de Firefox.
À noter que si votre environnement principal est une session Wayland, il va d'abord vous falloir effacer les variables d'environnement qui permettraient au navigateur de savoir qu'il y a un serveur Wayland disponible :
unset XDG_CURRENT_DESKTOP
unset XDG_SESSION_TYPE
unset WAYLAND_DISPLAY
DISPLAY=:2 chromium
Ensuite, naviguez jusqu'au site de VOD et lancez la lecture, passez-la en plein écran pour vérifier que ça prend bien toute la place dans la fenêtre Xephyr. Il reste encore à envoyer le son sur la sortie nulle : vous pouvez faire ça avec l'outil pavucontrol, lancé depuis l'extérieur de Xephyr (ou depuis l'intérieur, peu importe en fait, c'est pour contrôler PulseAudio, ou plutôt contrôler PipeWire comme si c'était un PulseAudio, ce qui n'est pas lié à l'affichage).
Ffmpeg
Voilà, on va pouvoir enregistrer tout ça avec Ffmpeg, qui dispose de modules pour enregistrer un affichage X11 et une entrée PulseAudio. Ça donne quelque chose comme ça, qu'on peut lancer depuis l'éxtérieur de Xephyr :
ffmpeg -f x11grab -i :2 -f pulse -i null-sink.monitor \
-c:a libopus -b 128k\
-c:v libsvtav1 -preset 7 -crf 32 \
enregistrement.mkv
On peut également limiter la capture à une portion de l'écran virtuel de Xephyr. Je vous laisse regarder la documentation à ce sujet. Pareil pour les codecs et leurs options. Reste à remettre la lecture au début de la vidéo, et à attendre que ça lise jusqu'au bout en vaquant à ses activités. À la fin, il suffit d'interrompre Ffmpeg avec un simple Ctrl + C.
L'avantage d'utiliser Xephyr et module-null-sink, c'est que vous pouvez faire ce que vous voulez à côté, ça n'interférera pas avec la lecture et l'enregistrement. Enfin, tant que vous ne vous amusez pas à lancer des trucs sur l'affichage X11 :2 ou à envoyer du son sur la sortie nulle, évidemment.
Post-production
Si vous avez bien choisi la taille de l'écran de Xephyr, ou la portion de cet écran capturée par Ffmpeg, vous n'avez par besoin de rogner la vidéo. En revanche, il faut couper correctement le début et la fin. Ça peut se faire avec mkvmerge :
mkvmerge -o recoupé.mkv --split parts:0:00:02-1:38:49 enregistrement.mkv

# Précisions légales
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 8 (+5/-0).
En France, la copie privée est définir par l'article L122-5 du Code de la propriété intellectuelle :
Les dernières précisions ne concernent pas le cas des chansons ou des films, pour lesquels on ne peut nous interdire d'effectuer des copies à l'usage privé du copiste. En revanche, ce qui est important, c'est que :
[^] # Re: Précisions légales
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4 (+1/-0). Dernière modification le 15 décembre 2025 à 12:05.
À noter que le fait de garantir que la copie privée soit possible malgré les mesures techniques de protection, était une mission de l'Hadopi, dont l'Arcom a peut-être hérité.
Mission essentielle puisqu'il s'agit de s'assurer que les gens peuvent faire ce pour quoi ils paient. Mission carrément oxymorique puisqu'il s'agit de s'assurer que les mesures anti-copies ne soient pas efficaces. Mais surtout, mission gravement lol dans la mesure où je n'ai jamais vu de tuto comme celui que je viens de faire sur le site de l'Hadopi.
D'ailleurs, c'en est où, le craquage d'AACS et de BD+ ? Aujourd'hui je n'ai toujours aucun lecteur Blu-Ray, mais ça pourrait changer s'il existe un craquage pérenne.
[^] # Re: Précisions légales
Posté par cévhé . Évalué à 2 (+0/-0).
Y a-t-il une différence légale entre la VOD « en location » et « en vente » au niveau de la copie privée ?
[^] # Re: Précisions légales
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3 (+0/-0). Dernière modification le 15 décembre 2025 à 12:17.
Légalement, absolument aucune, dans les deux cas c'est une source tout à fait licite.
Et accessoirement, dans les deux cas c'est de la location. La « vente » est simplement une location à durée indéterminée, à savoir jusqu'à ce que le fournisseur décide de mettre fin au service.
Moralement parlant, il y a bien une différence à mon avis. En effet, la copie privée est destinée à l'usage privé du copiste, à l'exclusion donc de projections en famille ou entre amis. Personne n'ira vérifier, mais en regardant en famille une copie privée, on commet une infraction. Lorsque ladite copie est prise sur une vidéo à la demande « achetée », l'infraction est tout aussi caractérisée légalement, mais nettement moins moralement parlant. D'autant que cette copie peut aussi servir à se prémunir de l'arrêt du service.
# Enregistement PipeWire avec Ffmpeg
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5 (+2/-0).
Ffmpeg n'a pas de module d'enregistrement natif PipeWire. En revanche, son module d'enregistrement PulseAudio permet tout à fait de capturer des trucs qui seraient pas accessibles si le serveur était un vrai PulseAudio. Concrètement, en guise de source d'enregistrement, on peut fournir un identifiant de nœud PipeWire qui correspond à une application (en fait à un émetteur de son) plutôt qu'à une entrée de son PulseAudio.
Sauf que ça marche mal, je ne sais pas pourquoi. Quand j'ai essayé, j'ai obtenu un enregistrement complètement haché. Donc, retour à l'utilisation d'une sortie virtuelle nulle, et à la capture du moniteur d'icelle.
[^] # Re: Enregistement PipeWire avec Ffmpeg
Posté par Tarnyko (site web personnel) . Évalué à 2 (+0/-0).
J'aurais dû lire ton comm' avant mon propre commentaire ci-dessous… bon à savoir, même si ça arrivera forcément un jour (tu peux ignorer cette partie du coup !).
# PulseAudio & enregistrement Wayland
Posté par Tarnyko (site web personnel) . Évalué à 3 (+1/-0).
Passionnant, merci ! J'ignorais l'usage du module PulseAudio ; PipeWire en direct ce serait intéressant, si la couche de compat' avec PA fait défaut un jour (mais là j'en suis encore à m'habituer…).
Je réagis sur :
Normalement la partie vidéo c'est couvert par cette section du billet (l'outil utilise aussi FFmpeg en interne).
Après il resterait à réunir les 2 flux.
[^] # Re: PulseAudio & enregistrement Wayland
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5 (+2/-0).
Alors, wf-recorder, je connais. C'est… pas mal, mais limité quand même.
Déjà, l'idée de capturer le son à part et de réunir les deux n'est applicable que si vous arrivez à trouver une méthode pour assurer une synchronisation à la milliseconde et à maintenir cette synchronisation sur une durée de plusieurs heures. Personnellement, je ne sais pas faire cela.
Heureusement, wf-recorder est capable d'enregistrer du son, mais chaque fois que j'ai essayé, pas moyen de lui faire capturer autre chose que la sortie principale de mon ordinateur. Donc pas utilisable si on veut continuer à utiliser l'ordinateur pour autre chose pendant l'enregistrement.
Ensuite, il permet théoriquement de choisir les codecs à utiliser, mais là encore, en pratique j'ai trouvé que ça marchait assez mal. Je ne me souviens pas très bien, mais de mémoire ça refusait certains codecs, ou ça ne comprenait pas ce que je demandais. Bref, pas au point.
Mais sinon, lancer un compositeur Wayland en mode fenêtré, c'est très facile, il suffit de lancer l'exécutable du compositeur. Genre lancer Sway depuis Sway : il apparaît dans une fenêtre et ça roule. Enfin presque, parce que pour que ce soit vraiment utilisable il vaut mieux le lancer avec un fichier de configuration dédié qui précise une touche de contrôle différente de celle utilisée d'habitude. Histoire de pouvoir contrôler les deux. :-)
# OBS Studio
Posté par nud . Évalué à 4 (+2/-0). Dernière modification le 15 décembre 2025 à 11:30.
Une autre façon, peut-être plus simple, d'enregistrer ce qui se passe sur l'ordinateur (audio et vidéo) est d'utiliser OBS Studio.
Il faut ajouter une source "Screen Capture (PipeWire)" (on peut capturer l'écran ou une fenêtre, ça utilise le même portal que le partage vidéo dans les browsers), et un "Audio Output Capture (PulseAudio)", et éventuellement un "Audio Input Capture (PulseAudio)" si besoin. Ensuite on clique sur "Start Recording" et c'est parti. Il est aussi possible de redimensionner ou d'incruster des trucs dans la vidéo ainsi générée.
C'est une astuce pratique quand le screen recorder intégré à Gnome ne suffit pas (par exemple parce qu'on a besoin du son).
[^] # Re: OBS Studio
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5 (+2/-0).
Je ne vois pas en quoi l'utilisation d'un truc comme OBS Sudio en configurant une capture d'écran et une capture de son serait plus simple que de lancer Ffmpeg. Plus accessible quand on n'a pas de notions de ligne de commande, sûrement, mais bon, des notions de ligne de commande, il en faut de toute façon pour lancer Xephyr et charger le module de sortie nulle de PipeWire/PulseAudio.
[^] # Re: OBS Studio
Posté par nud . Évalué à 3 (+1/-0). Dernière modification le 15 décembre 2025 à 11:33.
Ben non, ça juste marche, il n'y a besoin de rien configurer, ni Xephyr ni modules quelconques de pipewire/pulseaudio. D'où le "peut-être plus simple".
Après, il y a plusieurs façons d'écorcher un chat :-)
[^] # Re: OBS Studio
Posté par Tarnyko (site web personnel) . Évalué à 2 (+0/-0).
C'est 2 philosophies différentes en fait (j'ai aussi OBS d'installé ; je l'utilise en "client lourd interactif", jamais essayé de scripter le bousin).
Peut-on dire qu'OBS est plus pratique en ponctuel, et que la ligne de commande serait plus adaptée à un
cronp.ex.?[^] # Re: OBS Studio
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3 (+0/-0).
Je vois, c'est effectivement une façon de répondre au besoin d'enregistrer écran et son en laissant l'ordinateur tourner sans rien faire d'autre.
C'est un besoin différent de celui que j'ai exprimé, à savoir : enregistrer un film tout en faisant autre chose sur l'ordinateur, y compris des trucs qui produiront peut-être du son, en évitant que cela vienne parasiter la bande son.
[^] # Re: OBS Studio
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3 (+0/-0).
Oui mais moi j'écorche un chat tout en écrivant un journal sur DLFP. C'est peut-être un détail pour vous.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.