Au cours de mon mandat de blogueur en chef d’InfoWorld, je suis devenu fasciné par les vidéos commentées de logiciels en action. Des outils existaient pour réaliser ce genre de narration, mais le pouvoir explicatif de ce que l’on a appelé le screencasting n’avait pas encore été largement reconnu. Bien que ce support soit devenu un moyen standard de démonstration de logiciels et que j’ai continué à produire et à éditer de nombreux screencasts au fil des ans, les outils disponibles n’ont jamais fonctionné comme je le souhaitais : une prévisualisation facile et précise et l’exécution d’annotations, de coupures, de pauses et de narration. Lorsque les gens ont demandé des screencasts pour montrer comment utiliser Bram, j’ai essayé d’utiliser des outils conventionnels, j’ai abandonné par frustration et, sur un coup de tête, j’ai décidé de voir si je pouvais utiliser Bram pour créer l’éditeur dont j’avais toujours rêvé.
En quelques jours, j’avais la première version de Bram Studio ; quelques jours supplémentaires d’itération ont donné le premier screencast de Bram. L’outil s’exécute à partir d’un clone local du dépôt GitHub de Bram Studio, où vous lancez Bram, puis ouvrez ce qu’on appelle l’application cible.
Bram, dans le dépôt bram-studio, prêt à ouvrir Bram Studio.
Fonderie

La page des projets Bram Studio.
Fonderie

Déplacer une annotation de boîte pour qu’elle soit plus longue d’une image.
Fonderie
Cela fonctionne bien pour moi, mais la configuration me semblait un peu bizarre. Qui voudrait cloner un dépôt, puis installer Bram, puis utiliser Bram pour lancer Bram Studio ? Pourquoi ne pas simplement intégrer Bram Studio sous la forme d’un binaire unique facile à télécharger et à installer, comme Bram lui-même ?
Bram Studio est une boîte à outils d’innovation utilisateur
Mon étoile du Nord en matière de développement de produits est mieux décrite dans Democratizing Innovation d’Eric von Hippel. Ne vous contentez pas de livrer un produit en conserve pour répondre à un besoin anticipé, affirme-t-il. Au lieu de cela, rendez le produit malléable par les utilisateurs principaux qui peuvent l’adapter à leurs besoins réels. Les exemples du livre incluent, sans s’y limiter, les produits logiciels. Mon exemple préféré est celui des snowboards. Les entreprises ont expédié des cartes que les clients pouvaient modifier, ont observé les modifications, ont intégré les modifications les plus importantes et les plus générales dans leurs produits d’expédition, puis ont réitéré ce cercle vertueux.
En développant Bram Studio, j’ai réalisé que les agents que je dirigeais avec Bram – principalement Claude Code, parfois Codex – utilisaient FFmpeg de manière puissante. Dans un billet sur les réalisations protéiformes de son créateur, Fabrice Bellard, John Carmack écrit :
Aujourd’hui, FFmpeg est le moteur invisible d’Internet. YouTube l’utilise. Netflix l’utilise. VLC l’utilise. Chrome et Firefox en utilisent certaines parties. Chaque téléphone Android, chaque iPhone, chaque téléviseur intelligent, chaque outil de montage vidéo que vous avez touché exécute FFmpeg quelque part en dessous. Si vous avez regardé une vidéo sur un écran ces 20 dernières années, le code de Fabrice l’a traitée.
Voici l’explication de Claude sur l’une des façons dont il utilise FFmpeg dans Bram Studio.
Vous parlez d’une partie d’une scène et votre voix remplace le son de la scène exactement pendant cette partie. L’image est laissée intacte. Il faut quatre passes ffmpeg :
Nettoyez la voix. Coupez l’enregistrement à ce qui a été dit, à partir du moment où la lecture a commencé, puis débruitez, passez-haut et compressez-le : anlmdn → highpass=f=80 → un compresseur (NARRATE_AF).
Mesurez-le. Exécutez Lounorm=print_format=json dans une passe de mesure uniquement. Il rapporte uniquement le volume intégré ; cela ne change pas l’audio. Si le résultat est inférieur à –45 LUFS, la prise est refusée avec « aucune parole n’a été entendue ». Sinon le gain nécessaire pour atteindre –16 LUFS est appliqué comme un seul volume=…dB, puis un alimiteur.
Enregistrez l’audio en cours de remplacement (atrim) dans media/.narrated/, afin qu’une narration puisse être supprimée plus tard, même après d’autres modifications.
Insérez-le avec un filter_complex : l’audio original jusqu’au début (atrim, puis un fondu sortant de 10 ms), la nouvelle voix rembourrée ou découpée pour remplir exactement le tronçon (apad=whole_dur, atrim=duration), puis l’original à partir de la fin (un fondu entrant de 10 ms), joint avec concat=v=0:a=1.
Ces utilisations de FFmpeg sont intégrées à Bram Studio, dans un harnais Python, et pourraient être fournies dans le cadre d’un binaire autonome. Si j’empruntais cette voie, j’abandonnerais Python, qui est un casse-tête en matière de déploiement, au profit d’un langage comme Go ou Rust qui se prête au déploiement mono-binaire. Quelque chose comme ça s’est produit avec Bram lui-même. Il utilisait à l’origine Python pour les hooks qui s’exécutaient avant et après les appels de l’outil d’agent. Cette vie compliquée pour les utilisateurs Windows qui n’ont peut-être pas installé Python. À quel point serait-il difficile, me suis-je demandé, de porter ces hooks sur Rust, le langage principal utilisé par Bram (car il est basé sur le framework Tauri) ? En quelques heures, c’était fait et Bram était libéré de sa dépendance à Python. Les langages de programmation sont désormais fongibles ; Les LLM examinent la structure profonde du code ; ils se traduisent facilement et de manière fiable entre les représentations de surface.
Mais une version mono-binaire de Bram Studio ne serait pas une boîte à outils d’innovation utilisateur ; ce serait une application standardisée avec des hypothèses intégrées sur la façon d’utiliser FFmpeg. Lorsque vous utilisez Bram pour exécuter Bram Studio à partir de son dépôt local, vous pouvez utiliser son application cible prédéfinie, mais vous pouvez également parler à l’agent sur les clips audio uniques à votre projet. Si les ajustements intégrés ne conviennent pas, vous pouvez demander à l’agent de mesurer les niveaux, d’expérimenter des filtres et des limites et de fournir un résultat optimal.
Et même si rien de tout cela ne s’est encore produit, étant donné que Bram Studio n’a qu’une semaine, vous pouvez également demander à l’agent de signaler des problèmes GitHub qui signalent des bogues ou suggèrent des améliorations. Comme l’un de ces snowboarders de premier plan, vos mods peuvent ensuite piloter l’évolution du produit de base.
Un rêve d’automatisation devenu réalité
J’ai toujours imaginé qu’il serait peut-être un jour possible pour un outil de lire une capture d’écran brute, d’identifier des scènes et de produire un screencast bien édité avec des annotations utiles. Aujourd’hui, c’était ce jour-là. J’avais besoin de faire une dernière passe sur le premier screencast de Bram pour régler l’audio. Pour tester l’idée d’automatisation, j’ai activé la capture d’écran et parlé du processus dans Bram Studio avec la caméra en marche.
Puis, toujours au Bram Studio, j’ai invité Claude à rédiger un screencast. Les outils disponibles incluaient tout ce qui se trouvait sur mon ordinateur : FFmpeg bien sûr, également le framework Vision intégré d’Apple et le compilateur Swift (que je n’avais jamais utilisé), ainsi que le journal structuré exhaustif de Bram qui comprend des horodatages pour chaque tour de conversation.
Il a fallu quelques essais mais le résultat est étonnant : une vidéo de deux minutes au montage serré qui isole et annote chaque utilisation de FFmpeg lors de cette dernière passe de réglage audio.
Je dois faire toute une série de démos pour Bram et, comme cela évolue si vite, c’était une perspective intimidante. Maintenant, c’est faisable et j’ai hâte de m’y plonger. Lorsque j’utilise Bram d’une manière que je souhaite illustrer, je peux activer l’enregistrement d’écran et capturer ce qui se passe. La plupart des prises seront jetables, et c’est très bien. Lorsque j’aurai capturé quelque chose qui mérite d’être présenté, j’utiliserai Bram Studio en mode conversationnel pour créer automatiquement un premier brouillon. Ensuite, je passerai à l’application standard pour les annotations finales, les coupures, les pauses et la narration. Et parce que je suis le premier et le meilleur utilisateur principal de Bram Studio, les choses que j’apprends en cours de route entraîneront un cycle vertueux d’amélioration.
Rien de tout cela n’est spécifique à Bram ou à Bram Studio. Il se trouve que ce sont ces outils qui m’ont montré à quoi cela peut ressembler lorsqu’une utilisation judicieuse d’agents transforme un produit en une boîte à outils d’innovation pour les utilisateurs. Chaque produit logiciel devrait fonctionner de cette façon, et j’espère que bientôt beaucoup d’autres le feront.
