Bonsoir.
Je cherche à capturer le contenu d'une fenêtre X11 (de préférence sans les décorations du windows manager) dans un fichier vidéo avec ffmpeg
.
Pour sélectionner la fenêtre, j'ai d'abord essayé xwininfo
pour le choix de cette fenêtre, hélas les informations qu'il renvoie ne sont pas très utilisables : par exemple sur un xterm
, il retourne les dimensions en cellule de caractère et pas en pixels…
Deuxième tentative avec xdotool
, qui semble peut être mieux, mais là non plus ça ne marche pas vraiment. Je récupère des valeurs qui sont un peu incohérentes, et ffmpeg
ne capture pas ce que je veux.
#!/bin/bash
OUT=x11grab.mkv
rm $OUT
sleep 5
WID=$(xdotool selectwindow)
LOCATION=$(xdotool getwindowgeometry $WID | awk '/Position:/ {print $2}')
SIZE=$(xdotool getwindowgeometry $WID | awk '/Geometry:/ {print $2}')
ffmpeg -video_size ${SIZE} \
-framerate 30 -f x11grab \
-i ${DISPLAY}+${LOCATION} \
-c:v libx264 -crf 0 \
-preset ultrafast \
${OUT}
Les trois lignes avec xdotool
me permettent d'abord d'avoir l'ID de la fenêtre, puis de trouver position et dimensions, valeurs que je passe à ffmpeg
pour la suite, mais…
À gauche, la fenêtre que j'ai capturée, et à droite la vidéo qui a été enregistrée. Il y a clairement quelque chose qui cloche, et je me sens un peu bloqué…
Si donc vous avez une idée sur comment arriver à ce que je cherche, je suis prêt à vous payer un bonne pinte au THSF…
# Utilise un outil dédié ?
Posté par Cyril Brulebois (site web personnel) . Évalué à 3.
J'avais utilisé (rapidement pour quelques petits tests)
kazam
etvokoscreen
qui viennent avec plein d'options pour personnaliser la capture. Ça évite de se creuser la tête au niveau du fonctionnement de X11. ;)Debian Consultant @ DEBAMAX
# gtk-recordmydesktop
Posté par undeuxtroisout . Évalué à 3.
Regarde du côté de recordmydesktop :
https://fr.wikipedia.org/wiki/Recordmydesktop
Ça fait un moment que je ne l'ai plus utilisé, mais je me souviens juste que ça avait bien fonctionné.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.