Pourquoi?
J'utilise régulièrement ShadowPlay (technologie exclusive aux cartes graphiques Nvidia mais il y a un équivalent AMD) pour rapidement enregistrer des extraits d'un jeu.
Son côté pratique est difficile à battre: presser une combinaison de touche pendant un jeu lance l'enregistrement. Puis on refait cette combinaison pour arrêter. Et ça fonctionne, pratiquement sans aucun problème sur n'importe quel jeu (pourvu que votre ordi ne soit pas en train de souffrir à outrance): il vous enregistre un fichier vidéo daté dans un répertoire portant le nom du jeu, le tout avec une consommation de ressources minime puiqu'il utilise des fonctionnalités de la carte graphique pour l'enregistrement et le processeur n'est que très peu impliqué.
Mis à part le côté pratique, ShadowPlay a toujours été une grosse entaille à ma psychose de l'efficacité et la chasse au cycle processeur perdu, même si on en a pas vraiment besoin parce qu'on est un privilégié du processeur. Je vous ai dit que j'avais un problème.
Je désactive systématiquement tous les overlays que je peux désactiver. Ces éléments doivent s'accrocher aux APIs graphiques ou de Windows et écouter tous les événements d'entrée (touches pressées) et ça n'est évidemment pas gratuit bien qu'il y ait eu un certain soin pour rendre tout cela le plus efficace possible.
Si on peut s'en passer, pourquoi ne pas s'en passer et gagner +1 FPS dans CSGO (passer de 450 à 451 quoi)?
Le cas GeForce Experience
Sur Windows ShadowPlay est installé avec un outil nommé GeForce experience qui honnêtement ne m'a jamais rien apporté de bien (à part ShadowPlay).
Il est installé automatiquement sauf si vous choisissez de "personnaliser" votre installation des pilotes.
Le truc le plus utile qu'il propose est de vous informer des mises à jour de pilote et permettre leur téléchargement et installation en un clic. C'est cool mais ça a un prix:
- Chaque pilote téléchargé est conservé pour toujours dans un répertoire de travail de l'application (qui n'est pas c:\Windows\Temp ou similaire), bravo...
- Il y a une mise à jour auto de GeForce Experience lui-même, qui se télécharge aussi dans ce répertoire, et aussi sans aucun nettoyage auto. Ben ouais.
- Peut-être pas lié à GeForce Experience, mais j'ai eu un drôle de bug de crash de driver Nvidia dont la solution aura été de complètement tout désinstaller et reinstaller fraichement un pilote (sans GeForce Experience).
Ajoutez à cela une étrange concentration de processus Nvidia:
Sans GeForce Experience, j'ai juste deux processus "container" qui ne font rien.
Reste plus qu'à trouver un plan pour remplacer ShadowPlay...
OBS
Fût-un temps où OBS était légèrement obscur mais de nos jours, c'est un outil majeur dans le streaming qui puise ses origines du fin fond de la genèse de Twitch, quand c'était encore Starcraft II le jeu le plus streamé sur la plateforme. Bien entendu les gens de cette époque sont tout grisants et ont au moins 3 ou 4 enfants ou l'équivalent en chats.
Toujours est-il qu'un des développeurs principaux, R1CH vient directement de la plus grosse communauté StarCraft (historiquement) qu'il soit - TeamLiquid. D'ailleurs, si vous cliquez sur leur page "joueurs": https://www.teamliquid.com/players — Vous tombez par défaut sur la page StarCraft II.
Je m'égare, OBS est rapidement devenu le meilleur programme de streaming, particulièrement grâce à la magie de l'open source qui est soit une bénédiction de folie soit le bruit d'un prout de chèvre qui attend le bus. Dans ce cas-ci c'était la première proposition. Cool.
Il se trouve qu'utiliser OBS pour enregistrer du jeu en vidéo ça fonctionne très bien. Vous pouvez choisir d'enregistrer plutôt que streamer. Et vous pouvez configurer un encodeur matériel qui reviendra à peu près au même résultat que si on utilisant ShadowPlay.
C'est évidemment un peu plus velu à configurer, mais en bonus on peut choisir une meilleure qualité sans restrictions et du coup c'est encore mieux (à condition d'avoir l'ordi qui suive bien entendu) et l'enregistrement peut également être activé avec une combinaison de touches.
Alors on l'a notre solution, non? On lance OBS à chaque démarrage de l'ordi, on le laisse trainer là, et on utilise la combinaison de touche pour enregistrement quand on veut.
Ouais enfin, vous croyez que je vais laisser OBS tourner pour toujours en arrière plan? TOUS CES CYCLES CPU, je peux PAS. J'ai peut-être un problème.
LE PROJEEET
Okay donc ce serait cool si j'avais un programme, le plus rapide possible au monde de la terre, qui écouterait certains raccourcis clavier et pourrait activer et désactiver OBS sur demande.
Et ben vasy que c'est ça que j'ai fait... En Rust.
Bon c'est fait à l'arrache comme d'hab et il y a un peu de travail. Il se peut que je change le nom du projet vu que... Je l'ai appelé win-personal-shortcuts. Ouais.
A télécharger pour Windows ici: https://github.com/dkvz/win-personal-shortcuts/releases
Dézippez l'archive quelque part, et renommez le fichier .env.example à l'intérieur en .env et éditez le fichier pour vérifier que le chemin vers OBS sur votre machine est correct.
Il s'agit aussi de renseigner le nom du profil OBS à utiliser. J'utilise "Recording" et vous pose ci-dessous mes règlages OBS, à l'arrache comme de pas coutume.
Config OBS
Avant d'utiliser le programme il s'agit de configurer votre profil d'enregistrement sur OBS. Evidemment vous faites ça comme que vous voulez mais je vous montre comment je ferais personnellement.
Au niveau des règles principaux, je désactive toutes les confirmations (en vrai ça sert à rien mais bon):

Se rendre ensuite dans l'onglet "Output" (Sortie je crois en Français) et activer les options avancées avec le menu déroulant.
Il est possible d'avoir des réglages différents pour le stream ou l'enregistrement ou copier les règlages stream sur l'enregistrement, je trouve ça plus clair d'ignorer les règles "stream" et configurer manuellement ceux de l'onglet d'enregistrement.
Moi j'utilise ça:
Le bitrate est élevé, mais sur des jeux qui bougent beaucoup ce n'est même pas encore assez. Encore une fois, il faut que votre ordi (y compris le stockage) suive. Si c'est pour enregistrer une partie d'échecs, 2000Kbps ça remplace parfait les 60000.
Je vous conseille de choisir votre encodeur matériel (l'équivalent AMD devrait être disponible) et un chemin pour stocker les captures.
Le format mkv est bien adapté à contenir plusieurs flux, et j'utilise personnellement deux canaux audio, je vous en parle en détail plus loin.
Ne pas oublier d'enregistrer un profil qui contient un nom configuré dans l'application:
Dernièrement, si vous utilisez la source dédiée à la capture de jeu, il y a un gag où le début de la capture va être tout foireux (ce qui arrive parfois avec ShadowPlay aussi d'ailleurs).
C'est possible de l'éditer avec ffmpeg de manière semi-automatique parce que c'est toujours plus ou moins le même nombre de secondes qui manquent.
Ceci dit, si votre ordi le permet, le mieux est d'activer le mode "rapide" pour le Hook rate dans les propriétés de la source de capture:

Séparer l'audio sur plusieurs canaux
Avec ShadowPlay j'avais configuré une séparation de l'audio générale du bureau et mon micro, ce qui me donnait un fichier .mp4 avec deux canaux audio.
J'utilise ensuite ffmpeg (les recettes sont ici) pour soit retirer le canal micro, soit les mixer ensembles (voire retirer tout l'audio).
C'est possible d'enregistrer sur plusieurs canaux avec OBS aussi, il s'agit de cliquer droit dans la zone audio puis choisir les propriétés avancées:

Ensuite, cochez les cases adéquates dans "Tracks" tout à droite. Par défaut tous les éléments sont mixés ensembles et donc toutes les cases sont probablement cochées en dessous du track 1.
Je pense qu'il faut ensuite retourner dans les options d'enregistrement, et cocher les tracks à ajouter au fichier final.
Utilisation du programme
Il s'agit de créer un fichier .env dans le répertoire où se trouve le programme. Vous pouvez vous inspirer de celui qui est dans le fichier zip qui peut être téléchargé sur Github. Il est ici sinon.
La config ressemble à ça:
OBS_PATH="C:\\Program Files\\obs-studio\\bin\\64bit"
OBS_EXE="obs64.exe"
OBS_PROFILE="Recording"
DISABLE_NOTIFICATIONS="false"
Renseignez le bon chemin pour OBS et le nom de profil à utiliser pour l'enregistrement.
Lancer le programme le place tout de suite dans la zone de notification. L'icône est un genre de crevette avec un des dégradés par défaut de Gimp parce que c'est ce qui trainait sur mon ordi pour une raison qui raisonne.
Maintenant, y a plus qu'à presser sur ScrollLock dit aussi "ScrLk" ou euh... Ouais c'est une touche un peu oubliée qui a un mode "on ou off" comme Caps|ShiftLock. En fait je sais même pas à quoi elle sert d'où son avantage pour ce cas d'utilisation.
Certains ordinateurs portables n'ont même pas la touche sur leur clavier mais elle est normalement accessible via Fn+C ou Fn+K
Activer ScrollLock lance l'enregistrement, désactiver... Le désactive. Heureusement que j'ai esspliqué hein.
C'est tout.
Cela devrait même fonctionner si vous avez un autre OBS ouvert en même temps. Non pas que je le recommande.
Il n'est pas totalement exclu que certains systèmes anti-cheat trouvent que ce programme inconnu qui écoute les événement sur une mono-touche soit louche. Personnellement je n'ai jamais eu de soucis.
Trucs à faire
Comme d'hab, ça s'est un peu fait à l'arrache donc y a deux trois trucs à faire.
Par ex. le nom win-personal-shortcuts est euh... Ouais.
Ensuite, il y a un soucis sur certains jeux au départ de l'enregistrement où le jeu peut se voir minimiser ou un flash peut se produire. En effet, on peut pas utiliser OBS en ligne de commande sans avoir l'interface graphique (qui peut être réduite tout de suite par une option mais ça fait quand même un flash) et d'après des messages de forum que j'ai vu passer, ils n'ont pas l'intention de changer ça.
Utiliser ffmpeg n'est, à mon avis, pas une option parce qu'ils n'offrent pas de mode spécifique à la capture de jeu. Peut-être un jour?
Les notifications d'enregistrement réussi causent parfois le même genre de soucis, raison pour laquelle j'ai ajouté une option de config pour désactiver les notifications qui ne sont pas des erreurs.




Commentaires
Il faut JavaScript activé pour écrire des commentaires ici