GPU Screen Recorder - Le Bottin des Jeux Linux

GPU Screen Recorder

🗃️ Specifications

📰 Title: GPU Screen Recorder 🕹️ / 🛠️ Type: Tool
🗃️ Genre: Tool 🚦 Status: 05. Tested & Working (status)
🏷️ Category: Tool ➤ Screencast 🌍️ Browser version:
🔖 Tags: Tool; Screencast; Video Recording; Multimedia 📦️ Package Name: gpu-screen-recorder, gpu-screen-recorder-gtk
🐣️ Approx. start: 2020-01-08 📦️ Arch package: ✓
🐓️ Latest: 2023-08-15 📦️ RPM package:
📍️ Version: Latest: - / Dev: 59bf8e3 📦️ Deb package:
🏛️ License type: 🕊️ Libre 📦️ Flatpak package: ✓
🏛️ License: GPL-3 📦️ AppImage package:
🏝️ Perspective: First person (interface) 📦️ Snap package:
👁️ Visual: Fixed screen ⚙️ Generic binary:
⏱️ Pacing: Real Time 📄️ Source: ✓
👫️ Played: Single 📱️ PDA support:
🎖️ This record: 5 stars 🕳️ Not used:
🎀️ Game design: 4 stars 👫️ Contrib.: goupildb & Louis
🎰️ ID: 16180 🐛️ Created: 2022-04-17
🐜️ Updated: 2024-02-09

📖️ Summary

[en]: The fastest free screen recorder for Linux thanks to exclusive use of the graphics card GPU (minimizing the use of the slower CPU), similar to Shadowplay on Windows. It can be used for recording offline desktop, for live streaming and for nvidia-like instant replay, where only the last few seconds are recorded. [fr]: L'enregistreur d'écran libre le plus rapide pour Linux grâce à une utilisation exclusive du GPU de la carte graphique (en minimisant l'utilisation du CPU, plus lent), similaire à Shadowplay sur Windows. Il peut être utilisé pour enregistrer le bureau hors ligne, pour le streaming en direct et pour la relecture instantanée de type nvidia, où seules les dernières secondes sont enregistrées.

🎥️ Videos


🦉️ From Devs: (202004),


🎮️ Showcase: (202203), (202203), (202204),

🕸️ Links

🏡️ Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t(202xxx) gd(202004) gu(202xxx) r(202xxx) lp(202xxx) ht(202xxx) d(202203) d(202203) d(202204) d(202203) d(202203) g[fr](202xxx) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)] [WIKI] [FAQ] [RSS: waiting] [Changelog 1 2 3]

💰 Commercial: (empty)

🍩️ Resources
(empty, license): [Homepage] [Dev site] 🎬️ g(202xxx)

🛠️ Technical informations
[PCGamingWiki] [MobyGames]

🦣️ Social
Devs (No tux no bux (dec05eba) [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [PressKit] [reddit] [Discord]

🐝️ Related
[Gaming on Linux]

📦️ Misc. repositories
[Repology] [pkgs.org] [Generic binary] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage(author's repo)] [Snap] [PortableLinuxGames]

🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]

🕊️ Source of this Entry: [Gaming on Linux (202204)]

🦣️ Social Networking Update (on mastodon)

🛠️ Title: GPU Screen Recorder
🦊️ What's: A very fast libre screen recorder for Linux thanks to an exclusive use of the GPU
🏡️ -
🐣️ https://git.dec05eba.com/gpu-screen-recorder/about/
🔖 #LinuxTool #Screencast
📦️ #Libre #Arch #Flatpak
📖 Our entry: https://www.lebottindesjeuxlinux.tuxfamily.org/en/online/lights-on/

🥁️ Update:
⚗️
📌️ Changes:
🦣️ From: https://mastodon.social/@gamingonlinux/108113323857880417

🦝️ https://www.youtube.com/embed/n5tm0g01n6A
🎮️ https://www.youtube.com/embed/ljUC0nGumzA

📕 Description [en]

📕🐧"A very fast libre screen recorder for Linux thanks to an exclusive use of the GPU"🐧📕

GPU Screen Recorder

This is a screen recorder that has minimal impact on system performance by recording a window using the GPU only, similar to shadowplay on windows. This is the fastest screen recording tool for Linux.

This screen recorder can be used for recording your desktop offline, for live streaming and for nvidia shadowplay-like instant replay, where only the last few seconds are saved.

Note

This software works with x11 and wayland, but when using AMD/Intel or Wayland then only monitors can be recorded and root access is required. An authentication window will show up automatically if you have a polkit agent running and pkexec installed.
If you are using a variable refresh rate monitor on nvidia on x11 then choose to record "screen-direct-force". This will allow variable refresh rate to work when recording fullscreen applications. Note that some applications such as mpv will not work in fullscreen mode. A fix is being developed for this.
GPU Screen Recorder only supports h264 and hevc codecs at the moment which means that webm files are not supported.
CPU usage is much higher on wayland than on x11 when using nvidia. This is likely a nvidia driver issue. GPU Screen Recorder is still the fastest screen recorder on wayland, but x11 is recommended for nvidia users (in general).

TEMPORARY ISSUES

• screen-direct capture has been temporary disabled as it causes issues with stuttering. This might be a nvfbc bug.
• Recording the monitor on steam deck might fail sometimes. This happens even when using ffmpeg directly. This might be a steam deck driver bug. Recording a single window doesn't have this issue.
• Videos created on AMD/Intel are in variable framerate format. Use MPV to play such videos, otherwise you might experience stuttering in the video if you are using a buggy video player. Try saving the video into a .mkv file instead when using AMD/Intel, as some software may have better support for .mkv files (such as kdenlive).

AMD/Intel/Wayland root permission

When recording a window under AMD/Intel no special user permission is required, however when recording a monitor (or when using wayland) the program needs root permission (to access KMS).
To make this safer, the part that needs root access has been moved to its own executable (to make it as small as possible) and a GUI sudo prompt is shown to run this executable as root. The executable is called "gsr-kms-server".
However this doesn't work if you are using the flatpak version of GPU Screen Recorder.

Performance

On a system with a i5 4690k CPU and a GTX 1080 GPU:
When recording Legend of Zelda Breath of the Wild at 4k, fps drops from 30 to 7 when using OBS Studio + nvenc, however when using this screen recorder the fps remains at 30.
When recording GTA V at 4k on highest settings, fps drops from 60 to 23 when using obs-nvfbc + nvenc, however when using this screen recorder the fps only drops to 58. The quality is also much better when using gpu screen recorder.
It is recommended to save the video to a SSD because of the large file size, which a slow HDD might not be fast enough to handle.
Note that if you have a very powerful CPU and a not so powerful GPU and play a game that is bottlenecked by your GPU and barely uses your CPU then a CPU based screen recording (such as OBS with libx264 instead of nvenc) might perform slightly better than GPU Screen Recorder. At least on NVIDIA.

Note about optimal performance on NVIDIA

NVIDIA driver has a "feature" (read: bug) where it will downclock memory transfer rate when a program uses cuda (or nvenc, which uses cuda), such as GPU Screen Recorder. To work around this bug, GPU Screen Recorder can overclock your GPU memory transfer rate to it's normal optimal level.
To enable overclocking for optimal performance use the -oc option when running GPU Screen Recorder. You also need to have "Coolbits" NVIDIA X setting set to "12" to enable overclocking. You can automatically add this option if you run sudo nvidia-xconfig --cool-bits=12 and then reboot your computer.
Note that this only works when Xorg server is running as root, and using this option will only give you a performance boost if the game you are recording is bottlenecked by your GPU.
Note! use at your own risk!

Note about optimal performance on AMD/Intel

Performance is the same when recording a single window or the monitor, however in some cases, such as when gpu usage is 100%, the video capture rate might be slower than the games fps when recording a single window instead of a monitor. Recording the monitor instead is recommended in such cases.

Installation

If you are running an Arch Linux based distro, then you can find gpu screen recorder on aur under the name gpu-screen-recorder-git (yay -S gpu-screen-recorder-git).
If you are running another distro then you can run sudo ./install.sh, but you need to manually install the dependencies, as described below.
You can also install gpu screen recorder (the gtk gui version) from flathub, which is the easiest method to install GPU Screen Recorder on non-arch based distros.
If you install GPU Screen Recorder flatpak, which is the gtk gui version then you can still run GPU Screen Recorder command line by using the flatpak command option, for example flatpak run --command=gpu-screen-recorder com.dec05eba.gpu_screen_recorder -w screen -f 60 -o video.mp4. Note that if you want to record your monitor on AMD/Intel then you need to install the flatpak system-wide (like so: flatpak install flathub --system com.dec05eba.gpu_screen_recorder).


FAQ

How is this different from using OBS with nvenc?

OBS only uses the gpu for video encoding, but the window image that is encoded is sent from the GPU to the CPU and then back to the GPU. These operations are very slow and causes all of the fps drops when using OBS. OBS only uses the GPU efficiently on Windows 10 and Nvidia.
This gpu-screen-recorder keeps the window image on the GPU and sends it directly to the video encoding unit on the GPU by using CUDA. This means that CPU usage remains at around 0% when using this screen recorder.

How is this different from using OBS NvFBC plugin?

The plugin does everything on the GPU and gives the texture to OBS, but OBS does not know how to use the texture directly on the GPU so it copies the texture to the CPU and then back to the GPU (video encoding unit). These operations are very slow and causes a lot of fps drops unless you have a fast CPU. This is especially noticable when recording at higher resolutions than 1080p.

How is this different from using FFMPEG with x11grab and nvenc?

FFMPEG only uses the GPU with CUDA when doing transcoding from an input video to an output video, and not when recording the screen when using x11grab. So FFMPEG has the same fps drop issues that OBS has.

It tells me that my AMD/Intel GPU is not supported or that my GPU doesn't support h264/hevc, but that's not true!

Some linux distros (such as manjaro) disable hardware accelerated h264/hevc on AMD/Intel because of "patent license issues". If you are using an arch-based distro then you can install mesa-git instead of mesa and if you are using another distro then you may have to switch to a better distro.

Donations

If you really want to donate, you can donate via bitcoin or monero.

• Bitcoin: bc1qqvuqnwrdyppf707ge27fqz2n9y9gu7lf5ypyuf
• Monero: 4An9kp2qW1C9Gah7ewv4JzcNFQ5TAX7ineGCqXWK6vQnhsGGcRpNgcn8r9EC3tMcgY7vqCKs3nSRXhejMHBaGvFdN2egYet

📕 Description [fr]

Un enregistreur d'écran très rapide pour Linux grâce à une utilisation exclusive du GPU, par No tux no bux (dec05eba).

GPU Screen Recorder est l'enregistreur d'écran libre le plus rapide pour Linux grâce à une utilisation exclusive du GPU de la carte graphique (en minimisant l'utilisation du CPU, plus lent), similaire à Shadowplay sur Windows. Il peut être utilisé pour enregistrer le bureau hors ligne, pour le streaming en direct et pour la relecture instantanée de type nvidia, où seules les dernières secondes sont enregistrées.


GPU Screen Recorder

Il s'agit d'un enregistreur d'écran qui a un impact minimal sur les performances du système en enregistrant une fenêtre à l'aide du GPU uniquement, à l'instar de shadowplay sur Windows. Il s'agit de l'outil d'enregistrement d'écran le plus rapide pour Linux.

Cet enregistreur d'écran peut être utilisé pour enregistrer votre bureau hors ligne, pour la diffusion en direct et pour la relecture instantanée de type nvidia shadowplay, où seules les dernières secondes sont sauvegardées.

Remarque

Ce logiciel fonctionne avec x11 et wayland, mais si vous utilisez AMD/Intel ou Wayland, seuls les moniteurs peuvent être enregistrés et l'accès root est nécessaire. Une fenêtre d'authentification s'affichera automatiquement si un agent polkit est en cours d'exécution et si pkexec est installé.
Si vous utilisez un moniteur à fréquence de rafraîchissement variable sur nvidia sur x11, choisissez d'enregistrer "screen-direct-force". Cela permettra à la fréquence de rafraîchissement variable de fonctionner lors de l'enregistrement d'applications plein écran. Notez que certaines applications telles que mpv ne fonctionneront pas en mode plein écran. Un correctif est en cours de développement.
GPU Screen Recorder ne prend en charge que les codecs h264 et hevc pour le moment, ce qui signifie que les fichiers webm ne sont pas pris en charge.
L'utilisation du CPU est beaucoup plus élevée sur wayland que sur x11 lors de l'utilisation de nvidia. Il s'agit probablement d'un problème de pilote nvidia. GPU Screen Recorder est toujours l'enregistreur d'écran le plus rapide sur wayland, mais x11 est recommandé pour les utilisateurs nvidia (en général).

PROBLÈMES TEMPORAIRES

• La capture directe d'écran a été temporairement désactivée car elle provoque des problèmes de saccades. Il pourrait s'agir d'un bug de nvfbc.
• L'enregistrement du moniteur sur steam deck peut parfois échouer. Cela se produit même en utilisant directement ffmpeg. Il pourrait s'agir d'un bug du pilote de la steam deck. L'enregistrement d'une seule fenêtre n'a pas ce problème.
• Les vidéos créées sur AMD/Intel sont dans un format à fréquence d'images variable. Utilisez MPV pour lire ces vidéos, sinon vous risquez d'avoir des saccades dans la vidéo si vous utilisez un lecteur vidéo défectueux. Essayez d'enregistrer la vidéo dans un fichier .mkv lorsque vous utilisez AMD/Intel, car certains logiciels peuvent mieux prendre en charge les fichiers .mkv (comme kdenlive).

Autorisation root AMD/Intel/Wayland

Lors de l'enregistrement d'une fenêtre sous AMD/Intel, aucune autorisation spéciale n'est requise, mais lors de l'enregistrement d'un moniteur (ou lors de l'utilisation de wayland), le programme a besoin de l'autorisation de l'administrateur (pour accéder à KMS).
Pour rendre cela plus sûr, la partie qui nécessite l'accès root a été déplacée dans son propre exécutable (pour le rendre aussi petit que possible) et une invite sudo GUI est affichée pour exécuter cet exécutable en tant que root. L'exécutable s'appelle "gsr-kms-server".
Cependant, cela ne fonctionne pas si vous utilisez la version flatpak de GPU Screen Recorder.

Performances

Sur un système avec un CPU i5 4690k et un GPU GTX 1080 :
Lors de l'enregistrement de Legend of Zelda Breath of the Wild en 4k, le nombre d'images par seconde passe de 30 à 7 en utilisant OBS Studio + nvenc, mais en utilisant cet enregistreur d'écran, le nombre d'images par seconde reste à 30.
Lors de l'enregistrement de GTA V en 4k avec les paramètres les plus élevés, le nombre d'images par seconde passe de 60 à 23 avec obs-nvfbc + nvenc, mais avec cet enregistreur d'écran, le nombre d'images par seconde ne tombe qu'à 58. La qualité est également bien meilleure lorsque l'on utilise l'enregistreur d'écran gpu.
Il est recommandé de sauvegarder la vidéo sur un disque SSD en raison de la taille importante du fichier, qu'un disque dur lent pourrait ne pas être assez rapide pour gérer.
Notez que si vous avez un CPU très puissant et un GPU moins puissant, et que vous jouez à un jeu qui est bloqué par votre GPU et utilise à peine votre CPU, alors un enregistrement d'écran basé sur le CPU (comme OBS avec libx264 au lieu de nvenc) peut être légèrement plus performant que GPU Screen Recorder. Du moins sur NVIDIA.

Remarque concernant les performances optimales sur NVIDIA

Le pilote NVIDIA a une "fonctionnalité" (comprenez : un bug) qui réduit le taux de transfert de la mémoire lorsqu'un programme utilise cuda (ou nvenc, qui utilise cuda), comme GPU Screen Recorder. Pour contourner ce bug, GPU Screen Recorder peut surcadencer le taux de transfert de la mémoire de votre GPU à son niveau optimal normal.
Pour activer l'overclocking et obtenir des performances optimales, utilisez l'option -oc lorsque vous lancez GPU Screen Recorder. Vous devez également régler le paramètre NVIDIA X de "Coolbits" sur "12" pour activer l'overclocking.

Vous pouvez ajouter automatiquement cette option si vous exécutez sudo nvidia-xconfig --cool-bits=12 et redémarrez ensuite votre ordinateur.
Notez que cela ne fonctionne que lorsque le serveur Xorg est exécuté en tant que root, et que l'utilisation de cette option ne vous donnera un gain de performance que si le jeu que vous enregistrez est engorgé par votre GPU.
Note : à utiliser à vos risques et périls !

Note concernant les performances optimales sur AMD/Intel

Les performances sont les mêmes lors de l'enregistrement d'une fenêtre unique ou de l'écran, mais dans certains cas, par exemple lorsque le GPU est utilisé à 100 %, le taux de capture vidéo peut être inférieur au nombre d'images par seconde du jeu lors de l'enregistrement d'une fenêtre unique au lieu de l'écran. Dans ce cas, il est recommandé d'enregistrer le moniteur à la place.

Installation de l'application

Si vous utilisez une distribution basée sur Arch Linux, vous pouvez trouver gpu screen recorder sur aur sous le nom gpu-screen-recorder-git (yay -S gpu-screen-recorder-git).
Si vous utilisez une autre distribution, vous pouvez exécuter sudo ./install.sh, mais vous devez installer manuellement les dépendances, comme décrit ci-dessous.
Vous pouvez également installer GPU Screen Recorder (la version gtk gui) depuis flathub, ce qui est la méthode la plus simple pour installer GPU Screen Recorder sur des distributions non basées sur l'architecture.
Si vous installez GPU Screen Recorder flatpak, qui est la version gtk gui, vous pouvez toujours lancer GPU Screen Recorder en ligne de commande en utilisant l'option de commande flatpak, par exemple flatpak run --command=gpu-screen-recorder com.dec05eba.gpu-screen_recorder -w screen -f 60 -o video.mp4. Notez que si vous voulez enregistrer votre écran sur AMD/Intel, vous devez installer le flatpak sur l'ensemble du système (comme ceci : flatpak install flathub --system com.dec05eba.gpu_screen_recorder).


FAQ

En quoi est-ce différent de l'utilisation d'OBS avec nvenc ?

OBS n'utilise que le processeur graphique pour l'encodage vidéo, mais l'image de la fenêtre qui est encodée est envoyée du processeur graphique au processeur, puis de nouveau au processeur graphique. Ces opérations sont très lentes et sont la cause de toutes les baisses de fps lors de l'utilisation d'OBS. OBS n'utilise efficacement le GPU que sous Windows 10 et Nvidia.
gpu screen-recorder conserve l'image de la fenêtre sur le GPU et l'envoie directement à l'unité d'encodage vidéo sur le GPU en utilisant CUDA. Cela signifie que l'utilisation du CPU reste à environ 0% lors de l'utilisation de cet enregistreur d'écran.

Quelle est la différence avec l'utilisation du plugin OBS NvFBC ?

Le plugin fait tout sur le GPU et donne la texture à OBS, mais OBS ne sait pas comment utiliser la texture directement sur le GPU, donc il copie la texture sur le CPU et ensuite de nouveau sur le GPU (unité d'encodage vidéo). Ces opérations sont très lentes et provoquent de nombreuses chutes de fps à moins que vous n'ayez un CPU rapide. Ceci est particulièrement visible lors de l'enregistrement à des résolutions supérieures à 1080p.

Quelle est la différence avec l'utilisation de FFMPEG avec x11grab et nvenc ?

FFMPEG utilise le GPU avec CUDA uniquement lors du transcodage d'une vidéo d'entrée vers une vidéo de sortie, et non lors de l'enregistrement de l'écran avec x11grab. Donc FFMPEG a les mêmes problèmes de baisse de fps que OBS.

Il me dit que mon GPU AMD/Intel n'est pas pris en charge ou que mon GPU ne prend pas en charge h264/hevc, mais ce n'est pas vrai !

Certaines distributions linux (comme manjaro) désactivent l'accélération matérielle h264/hevc sur AMD/Intel à cause de "problèmes de licence de brevet". Si vous utilisez une distribution basée sur arch, vous pouvez installer mesa-git à la place de mesa et si vous utilisez une autre distribution, vous devrez peut-être passer à une meilleure distribution.

Dons

Si vous souhaitez vraiment faire un don, vous pouvez le faire via bitcoin ou monero.

• Bitcoin : bc1qqvuqnwrdyppf707ge27fqz2n9y9gu7lf5ypyuf
• Monero : 4An9kp2qW1C9Gah7ewv4JzcNFQ5TAX7ineGCqXWK6vQnhsGGcRpNgcn8r9EC3tMcgY7vqCKs3nSRXhejMHBaGvFdN2egYet

🚧️ Installation ➜ 🚀️ Launching [fr]

⚙️ Installation à partir du binaire

📦️ Installation à partir du paquet Manjaro/Arch :
• (✔ v. r32.08c76fc-1) Il est dans les dépôts Manjaro/Arch (souvent dans sa dernière version), il suffit d'installer le(s) paquet(s).


📄️ Installation à partir du source

• Source non testé.


🚀️ LANCEMENT DE L'INTERFACE:

▸ Classique :
• Si vous avez installé le jeu à partir d'un paquet, ou l'avez compilé puis installé dans les répertoires système : [Alt+F2] puis saisissez : gpu-screen-recorder-gtk

🕵️ Test [fr]

🕵️ Test (✔ v. r32.08c76fc-1 des dépôts AUR Manjaro/Arch) par goupildb (config. : Manjaro 64-bit) :
Le : 17 avril 2022
⏱️ Durée du test : 5 minutes.

🎯️ Objectif: tester l'enregistrement de l'écran pour vérifier le fonctionnement du paquet des dépôts.

💻️ PC specs :
Distribution Linux: Manjaro
Noyau : 5.17.1-3
Driver graphique : NVIDIA 510.60.02 (version propriétaire, via Manjaro)aro)

CPU : AMD Ryzen 7 2700X (8 coeurs)
Carte mère : MSI B450 GAMING PRO CARBON AC (RVB)
RAM : 32Go
Carte graphique : GeForce RTX 2070
Écrans : 2 écrans ASUS ROG de 3440x1440 pixels
Clavier : Roccat Vulcan (RVB)
Souris : G-Lab Kult-Iridium (RVB)
Joystick : Logitech Rumblepad (2 pads analogiques, un pad numérique, et retour de force).



🌻️ Premières impressions :
L'interface est très simple et claire.

‣ 🌤️ Axes d'amélioration
• J'ai testé d'autres modes : "Focused window", "Monitor DP-x(...)", "All monitors (HEVC, NvFBC)", mais à chaque fois je reçois un message d'erreur "GPU Screen Recorder: Failed to save the recording" quelque-soit l'emplacement choisi (bug visiblement).

‣ 🌞️ J'ai aimé
• En mode Window, il suffit de cliquer sur le bouton "Select window", puis sur la fenêtre à enregistrer, puis sur le bouton "Record", puis de sélectionner le nom du fichier et son emplacement, et sur le bouton "Start recording" pour déclencher l'enregistrement. Cet enregistrement se poursuit jusqu'à ce que l'on clique sur le bouton "Stop recording". Ça fonctionne bien. Je n'ai pas mesuré la fréquence d'enregistrement, j'ai enregistré une vidéo YouTube sans lague.


🕹️ Conclusion :
Impression globale : 👍️
Sur ma configuration et avec le paquet des dépôts dans cette version, seul le mode Window est fonctionnel (permet d'enregistrer une fenêtre du bureau), ce qui est déjà très bien.
A suivre pour les autres modes (je n'ai pas testé la compilation de l'outil, et donc d'autres versions plus récentes).
👏️ ❤️ Un grand bravo et merci à son auteur !