Parfois ça peut être intéressant d’enregistrer ce qui est affiché sur son écran…
Environnement
PC sous Linux Debian 11 Bullseye
ffmpeg --version
ffmpeg version 4.1.4-1+b3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9 (Debian 9.2.1-9)
Session Gnome/Xorg
Le script capture.sh
#!/bin/bash
set -x
OUTPUT=~/Vidéos
xwininfo >> "$OUTPUT"/info.txt
WIDHT=$(cat "$OUTPUT"/info.txt | awk '/Width:/ { print $2 }')
HEIGHT=$(cat "$OUTPUT"/info.txt | awk '/Height:/ { print $2 }')
ABSOLUTE_X=$(cat "$OUTPUT"/info.txt | awk '/Absolute upper-left X:/ { print $4 }')
ABSOLUTE_Y=$(cat "$OUTPUT"/info.txt | awk '/Absolute upper-left Y:/ { print $4 }')
ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i $(pactl list sources | sed -n '/alsa.*monitor/s/.*: \(.*\)$/\1/p') -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec libmp3lame -c:v libx264 -preset ultrafast -pix_fmt yuv444p -threads 0 -loglevel error "Capture du $(date +%d-%m-%y) à $(date +%H:%M:%S).mkv"
rm -f "$OUTPUT"/info.txt
Variante
ffmpeg -thread_queue_size 512 -f pulse -ac 2 -i $(pactl list sources | sed -n '/alsa.monitor/s/.: (.*)$/\1/p') -f x11grab -s "$WIDHT"x"$HEIGHT" -i :0.0+"$ABSOLUTE_X","$ABSOLUTE_Y" -r 30 -acodec aac -c:v libx264 -preset ultrafast -pix_fmt yuv420p -threads 0 -loglevel error "Capture du $(date +%d-%m-%y) à $(date +%H:%M:%S).mkv"
Usage
La commande xwininfo permet de sélectionner la fenêtre. Elle affiche une croix, à ce moment là cliquer sur la fenêtre voulue, ce qui permet le calcul des coordonnées X et Y.
La commande pactl permet de déterminer la sortie son
Bien sûr les codecs audio et vidéo peuvent être modifiés si vous en préférez d’autres.
https://ffmpeg.org/ffmpeg-devices.html#x11grab
Il est préférable de lancer le script un peu avant le début de ce qu’on veut capturer, de façon à mettre la fenêtre voulue seule sur l’écran. Et en plein écran c’est encore mieux