Enregistrer l’activité de son écran

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

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.