Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierLinuxFr.org

Trois projets récompensés durant OW2con'24 : Mercator, WIdaaS et Centreon

La conférence OW2con a récompensé trois projets de la communauté OW2 :

  • catégorie communauté (Community Award) : Mercator, pour la cartographie du système d’information
  • catégorie performance sur le marché (Market Award) : WIdaaS, pour la gestion d’identité et d’accès
  • catégorie technologie (Technology Award) : Centreon, pour la supervision

OW2con24 Awards

Mercator

Le prix OW2con'24 Best Project Community Award est remis à MERCATOR. Cette application web procure une cartographie du système d'information et suit les recommandations de l’ANSSI précisées dans son "Guide de la cartographie du système d'information". L’application permet une approche globale de la gestion des risques, autorisant une protection et une défense complètes ainsi qu’une résilience du système d'information. La cartographie du S.I. est un outil essentiel à sa maîtrise. Elle constitue une obligation pour les Opérateurs d'Importance Vitale (OIV) et les opérateurs de services essentiels (OSE).

WIdaaS

Le prix OW2con'24 Best Project Market Award revient à W'IdaaS (Worteks IDentity as a Service, l’identité comme service par Worteks), un logiciel de gestion d’identités et d’accès, en mode Cloud, accessible via des interfaces Web et piloté par des API REST. Ce programme s’appuie sur le projet OW2 FusionIAM, et gère l’authentification multi-facteurs (2FA/MFA). Ses fonctionnalités et son modèle économique correspondent aux attentes actuelles du marché des entreprises et des collectivités territoriales.

Centreon

Centreon est une plateforme de supervision ouverte, extensible et facile à intégrer, pour superviser de bout en bout des infrastructures d’entreprise. La solution est interopérable avec ITSM (information technology service management, voir ITIL), les outils d’observabilité, d’analyse de données, d’orchestration et d’automatisation.

Le mot d’OW2

(NdM: deux dépêches ont été proposées et fusionnées)

Cette année, l’association OW2 est ravie de récompenser trois logiciels open source pouvant aider les entreprises à protéger l’ensemble de leur patrimoine numérique et à conserver la maîtrise de leurs infrastructures en interne, en périphérie et dans le cloud. Centreon, W’IDaaS et Mercator méritent leur prix pour leur ouverture aux solutions tierces, leurs fonctionnalités, leur ergonomie et leur modèle économique,” déclare le CEO d'OW2 Pierre-Yves Gibello.

Les prix OW2con’24 Best Project Awards distinguent des réalisations exemplaires. Ils apportent aux membres d’OW2, aux chefs de projet et à leurs équipes une distinction communautaire et des opportunités de visibilité sur le marché.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Créatures ou IA : consultez, manipulez & annotez les images des bibliothèques, musées… grâce à IIIF

L’initiative IIIF, pour International Image Interoperability Framework, est née de la constatation que la diffusion d’images patrimoniales sur le web était « trop lente, trop coûteuse, trop décousue, trop complexe ». IIIF apporte une solution pérenne et élégante à ces difficultés en conciliant accessibilité, interopérabilité et sobriété. Il intéresse les GLAM (collections, bibliothèques, archives, musées, etc.) ainsi que les acteurs de l’enseignement et de la recherche.

Concrètement, IIIF créé un cadre technique commun grâce auquel les fournisseurs peuvent délivrer leurs contenus sur le web de manière standardisée, afin de les rendre consultables, manipulables et annotables par n’importe quelle application compatible.

International Image Interoperability Framework

Sommaire

Origine de IIIF

En 2010, constitution d’un groupe de réflexion et d’expérimentation sur l’interopérabilité des manuscrits médiévaux numérisés à l’initiative de l’université de Stanford. Ses travaux ont conduit à l’élaboration d’un modèle de données Shared Canvas basé sur le modèle d’annotation du W3C.

À la même époque, de grandes bibliothèques nationales et des universités ont travaillé à la définition d’un mécanisme d’échange des images pour aboutir en 2012 à la publication de la version 1 de l’API Image de l'International Image Interoperability Framework (IIIF).

Le Consortium IIIF a été créé en 2015 par onze institutions : la British Library, Artstor, Die Bayerische Staatsbibliothek, la Bibliothèque nationale de France, Nasjonalbiblioteket (Norvège), Wellcome Trust, et les universités d’Oxford, Stanford, Cornell, Princeton et Yale. Il compte actuellement 69 membres.

Qu’est-ce que IIIF ?

Un aspect spectaculaire de IIIF réside dans la visualisation fluide des images et le zoom profond, cf. Sagami River, Kyoto (1660?-1670?). Princeton University, mais IIIF ne se résume pas à ça, loin de là.

_Sagami River, Kyoto (1660?-1670?) affiché par le visualiseur libre UniversalViewer

IIIF désigne à la fois le cadre technique partagé d’un ensemble de protocoles ouverts et une communauté humaine qui les implémente, développe des logiciels et in fine expose des contenus audiovisuels interopérables.

Ce standard de fait est utilisé par de plus en plus d’institutions culturelles — collections, bibliothèques, musées, archives, etc. — et scientifiques — universités, labos, muséums, etc. Ses fonctionnalités s’étendent maintenant à l’audio et à la vidéo ; la prise en compte de la 3D est en cours.

Pour l’heure, IIIF est surtout utilisé pour la diffusion d’images numériques. Ce sont ainsi des centaines de millions d’images qui deviennent véritablement découvrables, consultables, comparables, manipulables, citables, annotables et mixables par n’importe quelle application compatible capable de se « brancher » sur les entrepôts des uns et des autres.

Sans téléchargement de fichiers images, ces ressources de « première main » sont immédiatement utilisables par les professionnels comme par les amateurs. Elles intéressent aussi les chercheurs, les enseignants et les élèves, et les médiateurs culturels, scientifiques et artistiques. IIIF facilite grandement la diffusion, la réutilisation et la valorisation de toutes ces ressources disséminées.

Principe général d’interopérabilité de IIIF : trois applications différentes sont branchées à trois entrepôts IIIF (source : Biblissima+ — Licence Ouverte / Open License 2.0)
Principe général d’interopérabilité de IIIF : trois applications différentes sont branchées à trois entrepôts IIIF (source : Biblissima+ — Licence Ouverte / Open License 2.0)

Visualisation d’un document

Photo de Bob Fitch, Martin Luther King Jr. & Joan Baez (1966), visualisée avec le logiciel libre Tify

Copie d’écran du logiciel libre Tify présentant une photographie de Martin Luther King et de Joan Baez (Bob Fitch, 1966). Ce document est fourni par un serveur IIIF opéré par l’université de Stanford.

Visualisation de plusieurs documents

La magie IIIF c’est la capacité de jongler avec les références des ressources, par exemple, pour les réunir dans des bibliothèques virtuelles ou encore pour servir de points d’entrée aux robots et autres IA afin d’analyser les documents.

Léonard Limosin est un peintre, émailleur, dessinateur et graveur français du XVIe siècle. Deux de ses œuvres sont présentées ci-après dans le visualiseur libre IIIF Mirador.

Vues d’œuvres de Léonard Limosin avec le logiciel libre Mirador

Sur cette page, vous pouvez explorer chaque image et zoomer, les comparer, lire leurs métadonnées, passer en plein écran ou agencer différemment les fenêtres. L’interface de Mirador vous permet aussi d’accéder à d’autres références en cliquant sur le bouton rond bleu puis en sélectionnant les documents préenregistrés.

Vous avez aussi la possibilité d’en ajouter d’autres via le bouton bleu Ajouter une ressource en bas à droite, ensuite en insérant l’URL d’un manifeste IIIF. En faisant une recherche sur Léonard Limosin vous trouverez différentes collections comportant certaines de ses œuvres. Certaines les exposent au standard IIIF. Dans ce cas, pour chaque notice il s’agit de récupérer le lien d’un manifeste IIIF (explicite ou associé au logo IIIF). Exemple, avec cette Crucifixion au Fitzwilliam Museum (Cambridge).

Le logiciel libre Omeka dispose de fonctionnalités IIIF et permet de créer des bibliothèques virtuelles de ressources IIIF.

Apports de IIIF

D’après IIIF en 5 minutes.

Pour les usagers

L’accès à des images de haute qualité ainsi qu’à leurs métadonnées, large choix de visualiseurs libres :

Ces outils, et d’autres encore, offrent une large palette d’interfaces riches et universelles pour :

Il existe de nombreux dispositifs pour utiliser ces ressources de « première main » et corpus dans un environnement éducatif et de recherche.

Pour les diffuseurs

  • bénéficier d’une manière standardisée, cohérente et efficace, de présenter et de partager leurs collections,
  • améliorer leur visibilité, l’accessibilité à leurs données et développer des espaces de collaboration et de recherche,
  • faciliter la gestion des ressources numériques en garantissant un accès homogène et pérenne,
  • promouvoir la participation des usagers en mobilisant des outils avancés pour l’exploration et l’utilisation des ressources,
  • proposer des projets de transcription, de crowdsourcing ou de sciences participatives en fournissant des documents annotables,
  • réduire et mutualiser les coûts en utilisant un standard ouvert, des services et des logiciels éprouvés.

Pour les développeurs

Il existe de nombreux logiciels et composants compatibles avec les API de IIIF, beaucoup sont libres. La page officielle Awesome IIIF recense les principaux ainsi qu’un grand nombre de ressources documentaires et de services.

IIIF est entièrement basé sur les standards et l’architecture du Web (principes REST et du Linked Data, Web Annotation Model du W3C, JSON-LD) ce qui facilite le partage et la réutilisation des données.

Le découplage entre la couche serveur et la couche cliente, la modularité des composants logiciels, la ré-utilisabilité des ressources offrent une grande souplesse et réduit la dépendance à un logiciel ou un prestataire.

La communauté des usagers et des développeurs est active.

Comment ça marche ?

Le manifeste est un élément essentiel de IIIF. C’est un document au format JSON-LD qui représente généralement un objet physique numérisé tel qu’un livre, une œuvre d’art, un numéro de journal, etc. Il peut également rassembler des éléments de provenances diverses. Il décrit l’ensemble du document, ses métadonnées, sa structure et référence les images et les médias qu’il embarque.

Les liens des manifestes IIIF sont plus ou moins faciles à trouver dans les notices des catalogues. Une méthode simple consiste à rechercher le logo IIIF ou à explorer les informations fournies par les visualiseurs. Le site officiel de IIIF alimente un annuaire non exhaustif des sites et, site par site, fournit généralement un mode d’emploi pour récupérer les manifestes.

Techniquement, IIIF comporte deux API principales, l’API Image et l’API Presentation qui fonctionnent de concert.

API Image

L’API Image fournit des informations basiques sur l’image ainsi que les pixels de l’image entière ou de zones à la demande.

Elle se présente avec les éléments suivants :

  • une URL d’accès aux informations techniques d’une image, abcd1234 est un exemple d’identifiant :
    http://www.example.org/image-service/abcd1234/info.json
  • une URL à construire à la carte pour récupérer et manipuler tout ou partie de l’image en précisant la zone, la taille, l’orientation, la qualité et le format de l’image à produire.

schéma de l’URL API Image

Voilà ce que ça donne en pratique avec l’image de test. Attention ! LinuxFR met en cache les images, si vous souhaitez effectuer les manipulations, copiez et modifiez les paramètres des url ci-après.

Le fichier info.jsonest le suivant :

  • https://stacks.stanford.edu/image/iiif/ff139pd0160/K90113-43/info.json

  • rendu homothétique de l’image entière avec une largeur de 300px

    https://stacks.stanford.edu/image/iiif/ff139pd0160/K90113-43/full/300,/0/default.jpg

    image entière rendue homothétique avec une largeur de 300px

  • détail de la même image

    https://stacks.stanford.edu/image/iiif/ff139pd0160/K90113-43/1680,1100,1300,1300/300,/0/default.jpg

    détail

  • rotation et transformations

    https://stacks.stanford.edu/image/iiif/ff139pd0160/K90113-43/1680,1100,1300,1300/150,/45/default.jpg

    détail

    https://stacks.stanford.edu/image/iiif/ff139pd0160/K90113-43/1680,1100,1300,1300/150,/0/bitonal.jpg

    détail
    https://stacks.stanford.edu/image/iiif/ff139pd0160/K90113-43/1680,1100,1300,1300/150,/0/gray.jpg

    le rendu en niveaux de gris ne fonctionne pas avec ce serveur IIIF.

Pour en savoir plus consultez les spécifications de l’API Image (version 3.0 actuellement).

L’API Presentation

En complément à l’API Image, l’API Presentation fournit les propriétés d’un document IIIF : métadonnées, structures, annotations, etc.

Principales composantes d’un Manifeste IIIF

Principales composantes d’un Manifeste IIIF (source : Biblissima+ — Licence Ouverte / Open License 2.0)

Il existe de nombreux visualiseurs pour afficher ces documents et les informations associées. On distingue alors dans différentes zones le rôle de chacune des deux API principales.

API Image

Source : Biblissima+ — Licence Ouverte / Open License 2.0.

API Presentation

Source : Biblissima+ — Licence Ouverte / Open License 2.0.

À noter que le visualiseur optimise le trafic en ne demandant au serveur que la partie de l’image à afficher

Pour en savoir plus consultez les spécifications de l’API Presentation (version 3.0 actuellement).

Les autres API

Voir la page des spécifications, extensions, traductions et travaux en cours.

  • Authorization Flow (version 2.0) - décrit un système de contrôle d’accès.
  • Change Discovery (version 1.0) - fournit les informations nécessaires pour découvrir et utiliser les ressources IIIF.
  • Content Search (version 2.0) - définit le mécanisme d’interopérabilité permettant d’effectuer des recherches dans les annotations textuelles associées à un objet.
  • Content State (version 1.0) - permet de référencer tout ou partie d’un manifeste IIIF et de décrire des modalités d’accès.

Au-delà de l’image : l’audio, la vidéo et la 3D

Les références à des ressources audio et vidéo sont prises en compte dans la version 3.0 de l’API de présentation IIIF. À noter qu’il n’existe pas pour l’audio et pour la vidéo d’équivalents de l’API Image, en effet, cet aspect est pris en charge par les navigateurs. Exemple : audio et vidéo d’un morceau musical associés à la partition.

Il y a une forte demande pour la prise en compte de la 3D par IIIF. Un groupe de travail rassemble les institutions et les personnes intéressées. Il anime un dépôt Github qui rassemble les documents et expérimentations du groupe.

IIIF et IA

IIIF est de plus en plus utilisé par des dispositifs d’apprentissage et de reconnaissance automatique en raison de la facilité d’accès aux images entières ou à des zones, dans les définitions et qualités nécessaires. Il est aussi possible d’imaginer des IA qui génèrent automatiquement des manifestes annotés.

La société française Teklia s’est spécialisé dans ce domaine. Elle vient d'annoncer le passage sous licence libre de sa plateforme Arkindex.

Harvard Art Museums a créé AI Explorer qui mobilisent un certain nombre d’IA pour décortiquer des reproductions d’œuvres et des photographies.

Le Consortium IIIF a mis en place un groupe de travail et il existe une formation en ligne sur le sujet.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lettre d'information XMPP de février 2024

NdT — Ceci est une traduction de la lettre d’information publiée régulièrement par l’équipe de communication de la XSF, essayant de conserver les tournures de phrase et l’esprit de l’original. Elle est réalisée et publiée conjointement sur les sites XMPP.org, LinuxFr.org et JabberFR.org selon une procédure définie.

Bienvenue dans la lettre d’information XMPP, nous sommes ravis de vous retrouver ici ! Ce numéro couvre le mois de février 2024. Merci à tous nos lecteurs et aux contributeurs de cette lettre d'information !

Comme la présente lettre d’information, de nombreux projets et leurs efforts au sein de la communauté XMPP sont le résultat du travail bénévole de personnes. Si vous êtes satisfait des services et des logiciels que vous utilisez, pensez à dire merci ou à aider ces projets ! Vous souhaitez soutenir l’équipe de la lettre d’information ? Lisez la suite en bas de page.

    Sommaire

    Annonces de la XSF

    Bienvenue aux personnes ayant renouvelé leur adhésion et aux nouvelles adhésions du 1er trimestre 2024 !

    Si vous souhaitez rejoindre la XMPP Standards Foundation, postulez maintenant.

    XMPP et le Google Summer of Code 2024

    La XSF a été acceptée à nouveau comme organisation hôte du GSoC en 2024 ! Si cela vous intéresse, n'hésitez pas à nous contacter !

    Les idées de projet GSoC émanant d'organisations liées à XMPP sont les suivantes :

    Projets hébergés fiscalement par la XSF

    La XSF peut offrir une domiciliation fiscale pour les projets XMPP. Les candidatures sont à réaliser via Open Collective. Pour plus d'information, voir le billet de blog. Projets actuels pouvant être supportés:

    Événements XMPP

    • XMPP happy hour italienne [IT]: rencontre XMPP mensuelle italienne, chaque 3e lundi du mois à 19h00 (heure locale) (évenèment en ligne, avec partage vidéo et web en direct).

    Articles

    Nous sommes heureux d'annoncer le lancement de l'instance PeerTube XMPP-IT, une plateforme dédiée au partage et à la découverte de vidéos autour du protocole XMPP et ses applications. Les membres de la communauté XMPP sont encouragés à contribuer en créant et partageant leurs propres vidéos. Qu'il s'agisse de tutoriels, illustration de projets ou discussions sur des sujets XMPP, vos contributions sont bienvenues !

    JMP a fêté son 7e anniversaire ! Félicitations ! Découvrez la passerelle mobile-friendly vers les fournisseurs SIP pour passer des appels de votre mobile vers un téléphone fixe.

    jmp-sip-gateway

    Nouvelles des logiciels

    Clients et applications

    monocles chat est disponible sur Google Play. Elle apporte de nombreuses mises à jour comme une vue des commandes fonctionnelle et un meilleur support des applications WebXDC, mais aussi une première intégration moderne des autocollants.

    Serveurs

    • La version ejabberd 24.02 a été publiée, et elle prend en charge les protocoles TLS 1.3 et SASL2 avancés. Cette version apporte des améliorations de performance avec Bind 2 pour des temps de connexion plus rapides, ce qui est particulièrement crucial pour les utilisateurs de réseaux mobiles. La prise en charge de XEP-0424 : Message Retraction permet aux utilisateurs de gérer l'historique de leurs messages et de supprimer ce qu'ils ont posté par erreur.

    Bibliothèques et outils

    • GitLab XMPP Bot, un bot XMPP qui envoie des messages basés sur les hooks de GitLab a eu sa version 1.0.0. Ce bot est basé sur python-nbxmpp et il est actif dans le chat de support de Gajim.

    • go-xmpp 0.1.0 a été publié.

    • python-nbxmpp 4.5.4 a été publié, ce qui corrige quelques problèmes concernant les changements de sujet et l'analyse de la date.

    • Slixfeed est un bot d'information proposé en tant que composant client et service ; il peut gérer plusieurs chats simultanément et afficher des médias en ligne, ce qui, en plus d'être destiné principalement aux chats privés, le rend exceptionnellement utile pour les groupchats où les contenus visuels sont essentiels.

    • StropheJS 2.0.0 a été publié.

    • xmpp-rs s'est enrichi d'un Code de conduite et d'un guide de contribution. N'hésitez pas à venir dire boujour !

    Extensions et spécifications

    La XMPP Standards Foundation développe des extensions XMPP dans sa série de XEPs en plus des RFCs XMPP.

    Les développeurs et développeuses, et autres experts ou expertes en normes du monde entier collaborent à ces extensions, en développant de nouvelles spécifications pour les pratiques émergentes et en affinant les façons de faire existantes. Proposées par n’importe qui, les plus réussies finissent finales ou actives – selon leur type – tandis que les autres sont soigneusement archivées en tant qu’ajournées. Ce cycle de vie est décrit dans la XEP-0001, qui contient les définitions formelles et canoniques des types, états et processus. Pour en savoir plus sur le processus de normalisation. La communication autour des normes et des extensions se fait sur la liste de diffusion des normes (archive en ligne).

    Extensions proposées

    Le processus de développement d'une XEP commence par la rédaction d'une idée et sa soumission à l'Éditeur XMPP. Dans les deux semaines qui suivent, le Conseil décide d'accepter ou non cette proposition en tant que XEP expérimentale.

    • Pas de XEP proposée ce mois-ci.

    Nouvelles extensions

    • Pas de nouvelle XEP ce mois-ci.

    Extensions ajournées

    Si une XEP expérimentale n'est pas mise à jour pendant plus de douze mois, elle sera déplacée d'expérimentale à ajournée. Si une nouvelle mise à jour est effectuée, la XEP redeviendra expérimentale.

    • Aucune XEP ajournée ce mois-ci.

    Extensions rejetées

    • XEP-0360: Nonzas (are not Stanzas)

    Extensions mises-à-jour

    • Aucune XEP mise-à-jour ce mois-ci.

    Dernier appel

    Les derniers appels sont lancés une fois que tout le monde semble satisfait de l'état actuel d'une XEP. Une fois que le Conseil a décidé que la XEP semblait prête, l'Éditeur XMPP lance un dernier appel pour recueillir des commentaires. Les commentaires recueillis lors du dernier appel peuvent permettre d'améliorer la XEP avant de la renvoyer au Conseil pour qu'il la passe à l'état stable.

    • Pas de dernier appel ce mois-ci.

    Extensions stables

    • Aucune XEP n’est passée à stable ce mois-ci.

    Extensions dépréciées

    • Aucune XEP déclarée dépréciée ce mois-ci.

    Diffuser la nouvelle

    N'hésitez pas à partager les nouvelles sur d'autres réseaux :

    Consultez également notre Flux RSS !

    Vous recherchez des offres d'emploi ou souhaitez engager une consultante ou un consultant pour votre projet XMPP ? Visitez notre tableau des offres d'emploi XMPP.

    Contributeurs & traducteurs

    Il s’agit d’un effort communautaire, et nous aimerions remercier les traducteurs et traductrices pour leurs contributions. Les volontaires sont les bienvenus ! Les traductions de la lettre d’information XMPP seront publiées ici (avec un certain retard) :

    • anglais (original) : xmpp.org

      • contributeurs généraux : Adrien Bourmault (neox), Alexander "PapaTutuWawa", Arne, cal0pteryx, emus, Federico, Jonas Stein, Kris "poVoq", Licaon_Kter, Ludovic Bocquet, Mario Sabatino, melvo, MSavoritias (fae,ve), nicola, Simone Canaletti, XSF iTeam
    • français : jabberfr.org et linuxfr.org

      • traduction : Adrien Bourmault (neox), alkino, anubis, Arkem, Benoît Sibaud, mathieui, nyco, Pierre Jarillon, Ppjet6, Ysabeau
    • italien : notes.nicfab.eu

      • traduction : nicola

    Aidez-nous à créer la lettre d’information

    Cette lettre d’information XMPP est produite collaborativement par la communauté XMPP. La lettre d’information de chaque mois est rédigé dans ce simple pad. À la fin de chaque mois, le contenu du pad est fusionné dans le dépôt Github de la XSF. Nous sommes toujours heureux d’accueillir des contributeurs et contributrices. N’hésitez pas à vous joindre à la discussion dans notre salon public Comm-Team (MUC) et ainsi nous aider à soutenir cet effort communautaire. Vous avez un projet et vous voulez en parler ? Pensez à partager vos nouvelles ou vos événements ici, et à les promouvoir auprès d’un large public.

    Tâches régulières :

    • rassembler les nouvelles dans l'univers XMPP
    • bref résumé des nouvelles et évènements
    • résumé de la communication mensuelle des extensions (XEPs)
    • relecture du brouillon de lettre d'information
    • préparation d'infographies
    • traductions
    • communication via les réseaux sociaux

    Licence

    Cette lettre d’information est publiée sous la licence CC BY-SA.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    RootDB - une application web de reporting, auto-hebergée

    Logo de RootDB
    Présentation rapide de RootDB, une application auto-hébergeable open-source (AGPLv3), permettant de générer des rapports à base de requêtes SQL.

    Dashboard

    Sommaire

    Genèse du projet

    Pour les besoins d'un client, il fallait que je génère rapidement des statistiques d'usage diverses et variées (à bases de tableaux et graphiques), à partir de plusieurs base de données relationnelles classiques et que j'intègre ces rapports dans un backoffice.

    Le premier réflexe fut de me tourner vers une solution que j'ai utilisée pendant une dizaine d'années auparavant et qui se nomme MyDBR. Cela répondait parfaitement à son besoin tout en étant abordable. MyDBR, bien maitrisé, permet de faire énormément de choses, mais l'interface est vraiment datée et l'accès aux fonctionnalités des bibliothèques graphiques se fait par l’intermédiaire de wrappers en SQL.

    J'ai cherché des alternatives, auto-hébergeables, simples à mettre en place, maintenues et avec la même logique pour la création de rapport mais je n'ai pas trouvé mon bonheur. Il y a, évidemment, pleins de solutions qui existent mais il y avait toujours quelque chose qui n'allait pas après essai, que ce soit dans la manière de générer des rapports ou bien les pré-requis, parfois compliqués, pour l'hébergement.

    D'ou l'idée de créer, avec un collègue, notre propre solution de reporting - parce que pourquoi pas, finalement.

    Open-source

    Ce projet n'était pas open-source à la base et nous pensions simplement vendre des licences d'utilisation.

    Sauf qu’aujourd’hui beaucoup de monde utilise le cloud, et ce dernier vient avec ses solutions intégrées de reporting, limitant de fait l'intérêt de ce genre de projet. Pour faire bref, je reste convaincu que tout le monde n'est pas sur le cloud et que ce genre de solution peut encore intéresser quelques personnes.
    À cause des doutes sur la pertinence même du projet, je n'ai jamais sérieusement cherché du financement, ce qui ne m'a jamais permis d'être à temps plein dessus. Nous avons donc mis du temps avant de produire quelque chose d'exploitable dans un environnement de production : un an et demi environ.
    À cela s'ajoute le fait que ce projet n'existerait pas sans toutes les briques open-source sur lesquelles il se base. Et comme c'est l'open-source qui me fait vivre depuis un certain nombre d'années, il me semblait finalement bien plus naturel de rendre ce projet open-source (licence AGPLv3) que d'essayer de le vendre en chiffrant le code source.

    RootDB ?

    Étant familier du SQL et du JavaScript, nous voulions avoir une solution qui ne mette pas de bâtons dans les roues du développeur, à savoir :

    • utiliser principalement le SQL pour la récupération et le traitement des données ;
    • avoir un accès intégral à la bibliothèque graphique choisie ;

    Ce choix de préférer un environnement de développement de rapport orienté développeur est assumé, d'où le nom du projet.

    Fonctionnalités

    Je ne vais pas vous présenter toutes les fonctionnalités car le site web principal et l'instance de démonstration les présentent déjà correctement. Je vais donc plutôt mettre en avant les spécificités du projet.

    Websocket

    Les requêtes SQL peuvent prendre du temps à tourner, surtout si les tables ne sont pas correctement optimisées. Par conséquent l'interface repose lourdement sur les websockets afin d'éviter les problèmes de timeout. Quand un rapport est exécuté, l'exécution des différentes requêtes est dispatchée de manière asynchrone et les vues affichent des résultats uniquement quand les données arrivent sur le websocket du rapport.
    D'une manière générale toute l'interface est rafraichie par websocket.

    Bibliothèques graphiques au choix

    Nous donnons accès à Chart.js ou D3.js, sans limitation, sans wrapper. Il est donc possible de se référer directement à la documentation officielle de ces deux bibliothèques.

    Onglets & Menu

    Nous aimons bien les menus. :)
    C'est simple, élégant et permet d'accéder à beaucoup d'options de manière claire.
    L'interface repose sur une barre de menu principale dynamique et une barre d'onglets dans lesquels s'affiche les différentes parties de l'application. Il est donc possible d'ouvrir plusieurs rapports (ou le même) dans le même onglet du navigateur web.

    Cache

    Il existe deux niveaux de cache :

    • un cache utilisateur, pratique pour cacher des résultats de manière temporaire afin de partager des résultats avec un autre utilisateur.
    • un cache système (jobs) ou il est possible de générer du cache de manière périodique. Nécessaire pour des rapports qui utilisent de très grosses tables qu'il n'est parfois pas possible d'optimiser.

    Paramètres en entrée

    Il est très facile de générer ses propres paramètres afin de filtrer les rapports, que ce soit sur une plage de date, une liste d'options sortie d'une base de données, des cases à cocher etc.

    Liens entre rapports

    Que ce soit avec Chart.js ou bien un tableau, vous pouvez créer des liens entre vos rapports ou bien sur le même rapport pour faire des rapports de type drill-down.

    Hébergement

    Côté API, RootDB est une application Laravel qui fonctionne sur du PHP en version 8.2.x (voir 8.3.x, mais pas encore bien testé) et utilise Memcached pour la gestion du cache.
    Le serveur de websocket est propulsé par Laravel Reverb.
    Côté Frontend, il s'agit d'une application React classique, en TypeScript, qui utilise PrimeReact pour la suite de composants prêt-à-l'emploi.

    Conclusion

    Concernant les fonctionnalités que nous aimerions mettre en place petit à petit :

    • une interface de configuration pour Chart.js - afin de, quand même, rendre plus simple la configuration des charts, tout en laissant la liberté au développeur de coder en javascript les fonctionnalités avancés ;
    • un nouveau type de connecteur pour supporter Microsoft SQL Server ;
    • une fonctionnalité d'auto-rafraichissement des rapports ;
    • l'import asynchrone de gros fichiers CSV ou Excel.

    Nous pouvons aider à l'utilisation, par l’intermédiaire :

    • d'un salon discord mais ce n'est pas forcément idéal pour ce genre de projet. Je suis donc entrain de regarder du côté de Matrix, éventuellement ;
    • un forum classique.

    Voilà, c'était une brève présentation de RootDB.
    C'est un projet qui n'a pas encore été testé par beaucoup de monde, d’où cette présentation pour le faire connaitre un peu plus.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Codeberg, la forge en devenir pour les projets libres ?

    Face aux risques que fait peser GitHub sur le monde des logiciels libres suite à son rachat par Microsoft en 2018, une alternative semble avoir percé. Cette dépêche propose un tour d'horizon des problèmes posés par GitHub et expose comment Codeberg pourrait y répondre.
    Logo Codeberg

      Sommaire

      Les points forts de Codeberg

      L'association Codeberg e.V. 1 et son projet Codeberg.org ont été fondés en janvier 2019, suite au rachat par Microsoft de GitHub. En plus d'un statut associatif à but non lucratif, ce qui limite les risques de disparition du jour au lendemain, Codeberg est basé en Europe (à Berlin), ce qui est un plus pour nos données personnelles.

      Son logo représente un sommet enneigé sur fond de ciel bleu. En effet, en Allemand, der Berg veut dire la montagne et on pourrait donc traduire Codeberg par une « montagne de code ». Et effectivement, la communauté compte fin avril 2024 plus de 102 000 utilisateurs et plus de 129 000 projets y sont hébergés. L'association qui dirige le projet compte plus de 400 membres. Le financement s'effectue par les dons (déductible des impôts en Allemagne) et/ou contributions aux projets sous-jacents à la forge.

      La forge est basée sur Forgejo, logiciel libre sous licence MIT, dont le nom vient de l'Esperanto forĝejo, ce qui est cohérent avec l'attention portée à la langue de l'utilisateur et aux problèmes de traduction (service Weblate). Comme avec GitLab, la licence libre implique qu'un projet peut posséder sa propre instance s'il le souhaite. On notera que Forgejo est un fork de Gitea, lui-même fork de Gogs, et est donc écrit en langage Go, langage sous licence BSD avec un brevet. Le projet Forgejo, évidemment hébergé sur Codeberg, est très actif avec plus de 900 Pull Requests acceptées depuis un an.

      La problématique du tout GitHub

      GitHub, lancé en 2008, est devenu la plus grosse plateforme d'hébergement de codes sources, utilisée par un grand nombre de projets majeurs du monde du libre (Firefox, Matrix, Yunohost…). Ce qui par effet d'attraction — et de réseau centralisant, contraire au choix de git décentralisé par nature — conduit souvent à faire de Github un choix par défaut, facilitant les interactions avec les autres projets et permettant d'accéder à une large base de contributeurs potentiels. Quand on cite une URL GitHub dans un réseau social, on peut d'ailleurs voir apparaître ce genre de message :

      Contribute to Someone/my_project development by creating an account on GitHub.

      Cependant, si ce service fourni par Microsoft est actuellement encore gratuit, il est soumis à son bon-vouloir, avec le risque de voir se répéter l'épisode SourceForge (publicités trompeuses, installateurs modifiés, usurpation d'identité de projets partis ailleurs, etc.).

      Par ailleurs, derrière une communication favorable à l'open source, le code de la forge GitHub est volontairement fermé. Vous ne pouvez donc pas avoir votre propre instance de GitHub. En outre, cela laisse un flou sur l'exploitation de nos données (au sens large, le code lui-même et nos données personnelles, l'hébergement étant délégué). Avec l'arrivée du projet Copilot, il est cependant certain que nos codes servent à alimenter un outil d'IA, permettant à Microsoft de monétiser des suggestions de code en faisant fi des questions de licence. Une partie d'un code sous licence libre pourrait potentiellement se retrouver injectée dans un projet avec une licence incompatible et de surcroît sans citation de l'auteur.

      Des alternatives possibles

      On pense tout d'abord à GitLab, logiciel lancé en 2011, qui permet d'avoir sa propre instance serveur pour maîtriser l'ensemble (client et serveur sont libres). Parmi les grands projets libres, on trouve en particulier GNOME et Debian qui utilisent leur propre instance GitLab CE (Community Edition), logiciel sous licence MIT. Mais il faut nuancer : la forge GitLab.com utilise GitLab EE (Enterprise Edition) qui est propriétaire et propose des fonctionnalités supplémentaires. GitLab suit donc un modèle dit open core. GitLab compterait plus de 30 millions d'utilisateurs inscrits et l'entreprise GitLab Inc., lancée en 2014, génère plusieurs centaines de millions de dollars de revenus. On notera enfin qu'en 2018, le site migre de Microsoft Azure à Google Cloud Platform (USA), ce qui a posé des problèmes d'accès dans certains pays.

      Autres projets de forges libres plus modestes :

      • Codingteam.net (une initiative française, service clôturé en 2019).
      • SourceHut http://sr.ht (et https://sourcehut.org/), initié par Drew DeVault.
      • Disroot basé sur Forgejo comme Codeberg, mais il ne semble pas avoir attiré de projets d'envergure (le portail, sorte de Framasoft néerlandais, est néanmoins à recommander).
      • Chez un Chaton (GitLab ou Gitea pour la plupart).
      • L'auto-hébergement : chez-vous, dans un fablab, en datacenter sur serveur dédié…

      Pour vous faire venir sur Codeberg

      Premières impressions

      La page principale est accueillante et annonce que Codeberg.org ne vous piste pas et n'utilise pas de cookies tiers. Les statistiques actuelles sont affichées : nombre de projets, d'utilisateurs et de membres de l'association. Chose agréable, vous avez la possibilité de choisir le français parmi les nombreuses langues proposées pour l'interface. Petite icône qui attire l'attention : l'activité de chaque dépôt peut être suivie grâce à un flux RSS. Sinon, l'organisation générale est très semblable à celle de GitHub ou GitLab et la prise en main de Codeberg se fait donc sans effort.

      Fonctionnalités avancées

      • Codeberg pages : permet de disposer d'un site web statique pour le projet
      • Forgejo actions : pour dérouler automatiquement les actions nécessaires à l'intégration continue (CI/CD)
      • Weblate : pour gérer les traductions de votre projet. On peut d'ailleurs y constater que parmi les traductions de Forgejo, le Français est dans le peloton de tête.

      Projets ayant migré ou ayant un miroir sur Codeberg

      Un certain nombre de projets importants utilisent désormais Codeberg, ce qui est à la fois un gage de confiance et assure une base de contributeurs a minima :

      • libreboot : remplacement libre de BIOS/UEFI.
      • Conversations : le client majeur XMPP sur Android.
      • WideLands : jeu libre basé sur le concept de Settlers II.
      • LibreWolf : fork de Firefox axé sur la vie privée.
      • F-Droid : magasin d'applications libres pour Android.
      • FreeBSD : miroir de https://cgit.freebsd.org/
      • FreeCAD : miroir officiel.
      • Forgejo : fork communautaire de Gitea suite à la privatisation de celui-ci en 2022.
      • Fedilab : client Android pour le Fediverse.
      • irssi : client IRC.
      • Peppermint OS : une distribution Linux avec bureau minimaliste.
      • DivestOS : un fork de LineageOS orienté sur la protection de la vie privée.
      • VeggieKarte : un service pour trouver des restaurants végétariens/végétaliens.

      Comment migrer vers Codeberg ?

      Migrer le code source et l'éventuel Wiki associé ne devrait pas poser de problème particulier. Il suffit de configurer git pour pusher vers la nouvelle forge. Cette page décrit comment migrer l'ensemble de votre projet (incluant les issues, le wiki, les Pull Request, etc.) vers Codeberg : https://docs.codeberg.org/advanced/migrating-repos/

      Concernant les Workflows (CI), bien qu'il n'y ait pas de garantie de compatibilité avec les Actions Github, la syntaxe se veut similaire pour faciliter la transition : https://forgejo.org/2023-02-27-forgejo-actions/

      Au-delà de l'aspect technique, il reste aussi à faire migrer la communauté d'utilisateurs (la présence fortement suivie sur Mastodon peut être un avantage).

      Conclusion

      Codeberg est un outil prometteur. Il reste pour la communauté du logiciel libre à le faire grandir. Rappelons les statistiques : 100 millions de développeurs sur GitHub, 30 millions utilisant GitLab et 100 000 pour Codeberg. Le potentiel est grand, l'un des enjeux est de financer l'association pour accompagner la croissance de la communauté, tout en faisant monter en puissance l'infrastructure informatique.

      Sources / Liens

      Controverse GitHub

      Forges diverses

      Codeberg


      1. e.V. est l'abréviation de eingetragener Verein (association déclarée). 

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Sortie de passbolt v4.5 : Gestion de l'expiration des mots de passe et autres améliorations

      La version 4.5.0 de Passbolt, baptisée « Summer is Ending », vient de sortir. Elle introduit des fonctionnalités clés et des améliorations pour optimiser la gestion des mots de passe et de leurs cycles de vie de manière sécurisée et collaborative.

      Pour mémoire, Passbolt est un gestionnaire de mots de passe Opensource, sous licence AGPL, qui se veut orienté «équipe», avec notamment des possibilités de partage de mot de passe à des personnes ou des groupes.

      Nouvelles fonctionnalités

      Gestion de l’expiration des mots de passe

      Cette nouvelle fonctionnalité permet la gestion et le traçage des mots de passes expirés.
      Un mot de passe partagé, ayant été consommé par un utilisateur, expire automatiquement quand l’accès de cet utilisateur a été révoqué. Vous pouvez en savoir plus sur l’article de blog dédié à ce sujet (en).

      Animation montrant le fonctionnement de la fonctionnalité d’expiration des mots de passe

      Support du Russe

      Suite à une contribution communautaire, passbolt est maintenant disponible en langue Russe, ce qui amène le total des langues supportées à 14. Un énorme merci à notre communauté pour ses contributions de plus en plus fréquentes.

      Capture d’écran montrant la langue russe disponible dans passbolt

      Intégration de Microsoft 365 et Outlook dans les paramètres SMTP

      Enfin, les paramètres SMTP ont été améliorés afin de permettre un meilleur support de Microsoft 365 et de Outlook.

      En savoir plus sur la version 4.5.0

      Pour en savoir plus et mettre à jour vers passbolt 4.5.0, consultez les notes de version (en).

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Archiver ses vidéos : retour d’expérience.

      Préambule : ma vie (et peut-être aussi la vôtre)

      Comme probablement beaucoup d’entre vous, j’ai des milliers de photos et vidéos accumulées au cours des 20 dernières années. C’est très pratique de pouvoir stocker cela sur un seul disque dur. Mais cela pose trois problèmes majeurs :

      1. la pérennité du support ;
      2. le classement des fichiers pour pouvoir en retrouver un en particulier dans… très longtemps.
      3. la possibilité de lire des fichiers dans plusieurs années (je pense à des fichiers Publisher 2.0 que je ne suis plus parvenu à lire par la suite – et non : les versions ultérieures à Publisher 2.0 ne lisent pas ces fichiers.

      Ce texte s’adresse à toute personne qui se pose trois questions :

      1. Pourrai-je visionner mes fichiers vidéos dans 30 ans pour les montrer à mes petits-enfants ?
      2. Comment organiser/classer mes fichiers vidéos pour les retrouver rapidement ?
      3. Comment réencoder mes fichiers vidéos pour limiter la place occupée (ou, dit autrement : quel format utiliser) ?

      Après avoir lu cette dépêche, je vous recommande très fortement de vous reporter aux commentaires qui suivent car vous y trouverez probablement des précisions, liens, corrections ou suggestions qui l’enrichissent.

      • Pour le point 1., aucun support n’étant inaltérable/incassable, la règle tient en une phrase : « sauvegarder sur plusieurs supports (pour parer une éventuelle défaillance), dans différents endroits (en cas d’incendie, de vol, d’inondation…) et si possible en chiffrant ses disques (pour protéger votre vie privée en cas de vol : c’est incroyablement simple sous linux)
      • Pour le point 2., j’avais rédigé un document il y a fort fort longtemps où j’expliquais que le seul classement pérenne était le classement chronologique (je vous laisse vous reporter au document pour comprendre pourquoi l’utilisation de logiciels propriétaires est à proscrire). Pour résumer, je crée un dossier par année (2023) dans lequel il y a douze sous-dossiers (2023_01, 2023_02 etc.) et dans chacun d’eux, je crée un dossier par jour avec la date et le lieu (par exemple, 2023_06_25_saint_denis_la_reunion indique immédiatement où et quand ont été prises les photos et les vidéos à l’intérieur de ce dossier). Les photos sont renommées (et retournées si nécessaire) automatiquement avec l’instruction jhead -autorot -nf%Y_%m_%d__%H_%M_%S_ *.jpg. Les vidéos sont renommées manuellement sous la forme 2023_06_25__video_02_christophe_et_philippe_en_velo.mov 1
      • Pour le point 3., le format JPG étant ouvert, la lisibilité des photos est garantie dans le temps. Pour les vidéos, c’est un peu plus compliqué puisqu’en général, trois formats interviennent :
        • le codec vidéo pour l’image (comme h264, h265, av1, mjpeg…) ;
        • le codec audio pour le son (comme mp3)
        • le format de conteneur (comme avi, mp4, mts…)

      C’est là où on en revient à l’histoire de ma vie.


      1. note : je n’ai jamais trouvé comment récupérer les métadonnées des vidéos pour les utiliser dans le nom du fichier, comme je le fais avec jhead. 

        Sommaire

        I Il était une fois MA vie !

        Après plus de 20 ans de stockage, mon disque dur de 1 To frisait les 90 % de remplissage. Alors, oui, 1 To, c’est très commun aujourd’hui : il me suffisait d’acheter un disque de 4 To et le problème était réglé.

        Oui… mais non. Je n’aime pas occuper de la place. Je pense que c’est une mauvaise habitude que d’avoir des téraoctets disponibles ou des gigaoctets sur une carte SD pour son smartphone que l’on utilise sans se poser de questions en ayant l’impression d’un stockage illimité. Car un jour, cela nous revient dans les dents (carte SD/disque dur qui plante sans sauvegarde, réinstallation de tout le système, sauvegarde de ses milliers de photos que l’on se décide - un jour - de ranger dans un dossier A_RANGER1 puis A_RANGER2 puis A_RANGER3, etc. puis on abandonne).

        En ayant un espace de stockage limité, on doit apprendre à le gérer.

        Les plus anciens se souviennent peut-être des magnétoscopes : on achète des cassettes, on enregistre des films en se disant « je le regarderai un jour » et on se retrouve avec des centaines de cassettes qui prennent la poussière. Ben c’est pareil avec les disques durs : on a des téraoctets en pagaille et on se dit : « je garde, on ne sait jamais. Et un jour (qui n’arrivera jamais), je ferai le tri ! »
        J’en reviens donc à mon disque dur quasi plein. Je fais une recherche sur mes fichiers vidéos et regarde le débit binaire (bitrate par la suite) : 40 000 kb/s soit environ 5 Mo/s pour des vidéos FullHD et jusqu’à 100 Mb/s (12 Mo/s) pour des vidéos 4k (évidemment, cela dépend de l’appareil à l’origine de la vidéo). Voici les différents bitrate que j’ai pu rencontrer :
        • fichier mp4 4K drone : 100 Mb/s ;
        • fichier mp4 4K go pro : 60 Mb/s
        • fichier mov FullHD : environ 16Mb/s
        • ficher avi 640*480 : environ 15 MB/ (mjpeg et format son araw)
        • fichier avi 320*240 : entre 1 et 2,5 Mb/s

        Loin d’être un expert dans la compression vidéo, le poids des fichiers m’interpelle quand même. En effet, un site de téléchargement de films - que je n’ai jamais fréquenté car c’est illégal - a pour objectif d’optimiser le ratio qualité/poids et donc d’offrir une bonne qualité visuelle pour un poids réduit. Ainsi, un film en FullHD de 90 min a un poids de 1400 Mo soit un bitrate d’environ 2 Mb/s (250 ko/s avec le codec H264). Un film en 4K de 90 min a un poids de 4 Go soit un bitrate d’environ 4Mb (500 ko/s avec le codec H265). Et il paraît – je ne le sais pas directement car je n’ai jamais fréquenté ce site dont je ne connais même pas l’existence – que la qualité des films sur le site en question est bonne, visuellement parlant s’entend.

        Il était donc temps de se mettre au travail et de réencoder mes vidéos personnelles.

        L’objectif de ce document est donc triple (et permettra de répondre aux questions 1. et 3. que s’est posé le lecteur ou la lectrice dans le préambule :

        • ré encoder ses vidéos automatiquement via un script bash (en utilisant le logiciel libre ffmpeg ) sans perte de qualité visible  ;
        • réduire le poids des fichiers de façon notable (par notable, j’entends ici une réduction d’au moins 20 %, ce qui est totalement subjectif, mais j’assume) ;
        • s’assurer de la pérennité de ses vidéos (i.e. être capable de les visionner dans 20 ans) ;

        II Mon environnement

        • Le matériel : Lenovo V45 (payé 300 € environ avec un AMD A4-9125 radeon R3, 8Go de mémoire vive et un SSD Samsung de 1To, le tout sous kubuntu 22,04).
        • Les logiciels : ffmpeg version 4.4.2, vlc, krename (pour renommer ses fichiers par lot), kfind pour retrouver des fichiers avec des extensions précises (je ne maîtrise pas du tout l’outil en ligne de commande find), avidemux pour faire du montage vidéo basique (couper quelques minutes d’une vidéo par exemple), dolphin pour naviguer dans les fichiers et, surtout, indicator-cpufreq (qui permet de réduire la fréquence du processeur et éviter que le ventilateur ne tourne en permanence).

        III Les choix techniques

        Je ne devais utiliser que des logiciels libres et des formats ouverts. Pour les logiciels : mon choix s’est porté sur ffmpeg pour l’encodage car c’est LA référence pour la conversion de vidéos, même si l’usage de la ligne de commande peut rebuter cetains (mais vous verrez par la suite que les scripts simplifient grandement la vie). Pour les formats :

        • MP3 pour l’audio : il n’est plus protégé par un brevet depuis 2017 et me convenait parfaitement, en choisissant un débit de 250kb/s (ce qui est sûrement excessif mais la place occupée par le son dans une vidéo est faible par rapport à la vidéo). Je sais qu’il y a vorbis mais le mp3 me semble plus « universel », notamment si l’on regarde la vidéo sur un téléviseur
        • MKV pour le conteneur : c’est un format ouvert et qui est lu sur tous les téléviseurs sur lesquels j’ai pu le tester.
        • H265 pour le format vidéo : c’est un format sorti en 2013 soumis à brevet mais il est possible d’utiliser une bibliothèque libre (x265) pour effectuer l’encodage (c’est cette bibliothèque qu’utilise ffmpeg). Là encore, lorsque j’ai testé des vidéos encodées en h265 sur différents téléviseurs pas trop vieux, je n’ai jamais eu de problème. Sachez qu’il existe le format AV1, plus récent, plus efficace en termes de compression, libre et qui répond à mes besoins. Mais deux éléments m’ont fait renoncer à l’utiliser :
          • l’encodage (avec ma machine) est extrêmement lent (j’ai abandonné l’encodage de 30 secondes de vidéo quand, après une heure, il en était toujours à la première seconde !) ;
          • il n’est pas encore généralisé : peu de téléviseurs peuvent lire ce format (si vous en connaissez, je suis preneur). Il est fort probable que dans une dizaine d’années, je réencoderai mes vidéos en AV1, mais laissons cela pour plus tard.

        J’ai également choisi d’encoder mes vidéos en deux passes car cela me permet de décider du débit binaire (et donc de la taille du fichier finale) tout en ayant une meilleure qualité qu’en une passe.
        J’ai utilisé le programme indicator-cpufreq qui me permet de réduire au minimum la fréquence de mon processeur (ici 1,2 Gh) afin d’éviter que le ventilateur ne tourne sans arrêt (à noter qu’une mise en veille repasse la fréquence au maximum et il n’est plus possible de la réduire, sauf à redémarrer l’ordinateur). Avec une fréquence réduite au minimum, le ventilateur ne se déclenche que quelques secondes toutes les minutes et le processeur ne dépasse pas les 50°C (c’est hardinfo qui me le dit).

        IV Les problèmes rencontrés et les contraintes (spoiler : il faut du temps !)

        • L’encodage en deux passes permet d’obtenir une meilleure qualité visuelle (de ce que j’ai compris) mais au prix d’un temps de calcul doublé. Ainsi, une vidéo d’une minute (en FullHD) a nécessité environ 100 minutes d’encodage pour obtenir le fichier final. Autant vous dire que mon ordinateur a tourné pendant environ 5 mois près de 20 heures par jour en moyenne. En revanche, j’ai découvert comment arrêter un processus (kill - STOP numero_pid_util) lorsque j’avais besoin de retrouver toute la puissance du processeur et comment le reprendre plus tard (kill - CONT numero_pid_util). Par ailleurs, je n’ai pas trouvé comment utiliser la carte graphique pour le réencodage, car il paraît que c’est plus rapide
        • Je ne connais pas l’instruction ou l’option (si elle existe) de ffmpeg qui permet de conserver les métadonnées des vidéos. Ainsi, la conversion effectuée avec les scripts ci-dessous supprime toutes les métadonnées (pourtant, cela semble possible)
        • Je n’ai pas trouvé, malgré mes recherches, comment reprendre la première passe d’un encodage après une coupure ou un bug (ffmpeg génère un fichier log durant la première passe, fichier qu’il devrait être possible de réutiliser afin de reprendre là où il s’est arrêté). Il m’a donc fallu, parfois, reprendre l’encodage d’une vidéo à zéro.
        • La procédure avant encodage demande de l’organisation :
          • Rechercher toutes ses vidéos est relativement aisé et rapide : kfind permet d’effectuer une recherche sur de multiples formats. Ensuite, un copier-coller sur un autre disque dur permet de les isoler.
          • Il est nécessaire de connaître le bitrate de chacune d’elle. Une recherche Internet et hop, le script qui va bien (voir la partie sur les scripts) génère un fichier CSV pour nous faciliter le travail.
          • Il faut ensuite regrouper les vidéos par débit et définition : ainsi, une vidéo 640*480 de 10 Mb/s ne pouvait pas être dans le même répertoire qu’une vidéo en 320*240 de 5 Mb/s également puisque le bitrate final n’était pas le même. Là, pas de secret, il faut le faire manuellement. Mais rassurez-vous, bien souvent, les vidéos d’une même période ont toute le même bitrate.
          • L’étape suivante a consisté à choisir le débit final des vidéos suivant leur définition de façon à ce que la vidéo finale subisse une compression pas ou peu visible à l’œil par rapport à l’original (ce qui est très subjectif). J’ai donc choisi (en partant des débits de YiFY et un peu au doigt mouillé) :
            • 10 Mb/s pour de la 4K (porté très rarement à 12 Mb/s si la vidéo comportait beaucoup de mouvements) ;
            • 4 Mb/s pour de la FullHD ;
            • environ 2 Mb/s pour de la 640*480
            • 1 Mb/s pour de la 320*240
        • Un bug est apparu lors de la conversion des fichiers MJPEG directement en H265 : les couleurs finales étaient complètement différentes des originales. Je ne suis pas le seul à avoir subi ce qui semble être un bug. Au final, j’ai contourné ce désagrément en convertissant d’abord ces fichiers en xvid avec un gros bitrate pour limiter la perte de qualité (opération très rapide) puis les xvid en H265, ce qui a réglé le problème.
        • J’imagine que, comme beaucoup d’entre nous, je souhaite limiter mon impact environnemental. N’ayant pas de panneaux photovoltaïques, mon empreinte carbone est probablement élevée car j’ai été contraint de laisser tourner mon ordinateur jour et nuit en consommant de l’électricité pas toujours verte. En contrepartie, j’économise l’achat d’un nouveau disque dur. Cela me permet de me donner bonne conscience.

        V Les scripts utilisés

        Ces scripts (qui fonctionnent sous Linux. Pour Windows, il faudra adapter…) ont été écrits à partir de ce que j’ai trouvé sur Internet car ma maîtrise de ce genre d’outils est très fragile voire inexistante (j’ai donc pas mal bidouillé et ils peuvent sûrement être optimisés). Je vous dirais volontiers qu’ils sont sous licence libre ou dans le domaine public mais n’ayant pas noté mes sources, je les livre ci-dessous sans aucune garantie de quoi que ce soit (la seule chose que je peux garantir, c’est que j’ai fait pas mal de modifications par rapport aux scripts originaux).
        Je vous rappelle que pour utiliser ces scripts, vous devez faire un copier-coller du script dans un fichier texte (en utilisant kate par exemple), l’enregistrer puis le rendre exécutable. Ensuite, vous placez ce script dans le répertoire de vos vidéos, et, dans une console, vous tapez ./nom_du_script
        Je pense avoir mis suffisamment de commentaires pour comprendre ce que fait chaque script. Si cela n’était pas le cas, signalez les erreurs ou les suggestions dans les commentaires.
        Voici un résumé pour chacun d’eux :

        1. convertion_par_lot_videos_en_265 : c’est le script que j’ai le plus utilisé pour convertir des vidéos en H265 en choisissant une ou deux passes et le bitrate.
        2. convertion_par_lot_videos_en_265_une_passe_crf : convertir en une seule passe en choisissant la qualité voulue
        3. convertion_par_lot_videos_en_xvid : convertir des vidéos au format XVID, lorsque la conversion des MJPEG vers H265 pose problème
        4. convertion_vers_mkv_par_lot : convertir tous les formats de conteneur en MKV (j’ai eu parfois des problèmes avec certaines extensions, le passage en MKV réglait le problème) ;
        5. convertion_videos_en_son_par_lot : ne garder que le son (pour des vidéos youtube que l’on souhaite uniquement écouter par exemple) ;
        6. convertir_son_en_mp3_garder_video : réeconde uniquement le son en MP3, ne touche pas la vidéo
        7. extraire_image_precise_d_une_video : permet d’extraire une image précise (par exemple la 123) d’une ou plusieurs vidéos. Ce script m’a permis de comparer l’image d’origine et l’image réencodée. J’utilisais ensuite Gimp pour visualiser les différences entre les deux images.
        8. recuperer_bitrate_video_par_lot : récupère tous les bitrates des vidéos d’un même répertoire et l’exporte dans un fichier CSV (données séparées par une espace) ;
        9. recuperer_toutes_infos_video_par_lot : exporte dans un fichier csv les dimensions de l’image, le fps etc. mais pas le bitrate (je n’ai pas trouvé comment fusionner ce script avec le précédent)
        10. stabiliser_video_par_lot_en_testant_les_10_qualites : script pour stabiliser une vidéo avec une image « secouée » en testant les 10 qualités possibles automatiquement. Vous pouvez faire des tests, chez moi, ce n’était pas probant. Le script est à revoir probablement.
        11. stabiliser_video_par_lot_version : idem que ci-dessus mais vous choisissez le paramètre de la stabilisation.
        12. creer_video_cote_a_cote_par_lot : pour comparer deux vidéos en en créant une nouvelle avec les deux côte à côte (je l’utilise pour comparer la vidéo d’origine et la vidéo stabilisée).
        13. supprimer_bande_son_video : ne conserve que la vidéo, supprime le son (pour des vidéos où le son ne présente aucun intérêt). Et c’est parti !

        convertion_par_lot_videos_en_265

        #/bin/bash
        # conversion par lot de fichier video au format H265 avec audio en mp3 qualité 256k
        # nice -19 signifie que le programme aura la priorité la plus faible, ce qui ne devrait pas beaucoup ralentir l'exécution des autres programmes (en théorie tout au moins...)
        # si vous souhaitez interrompre le programme pour avoir accès à tout le processeur, tapez l'instruction top puis identifiez le PID UTIL des processeurs ffmpeg concernés puis tapez kill - STOP numero_pid_util. Pour relancer le processus, tapez kill - CONT numero_pid_util
        echo "Ce script va réencoder vos vidéos (MKV MP4 MTS AVI MOV WEBM FLV MPG MPEG WMV 3GP RM ASX VOB F4V MKS M4V OGV M2V MPV TS M2TS AVC HEVC M1V M2V MPV) en H265, le son en MP3 256k et au format de conteneur MKV en 1 ou 2 passes. Vous allez pouvoir choisir le bitrate d'encodage pour la vidéo, le codec et le nombre de passe. Les extensions des vidéos peuvent être en minuscules ou majuscules mais pas un mélange des deux. Les fichiers originaux seront déplacés dans le dossier originaux et les fichiers convertis dans le dossier convertis_x265"
        echo -n "Entrez le bitrate -sans espace - que vous souhaitez utiliser : (4000 recommandé pour de la video FullHD, 10000 pour de la 4K) "
        read bitrate
        # les lignes (rm x265_2pass.log / rm x265_2pass.log.cutree / rm x265_2pass.log.cutree.temp / rm x265_2pass.log.temp) suppriment les fichiers générés lors des deux passes
        # pour conserver l'audio, remplacer -c:a libmp3lame -b:a 256k par -c:a copy
        # pour réduire la qualité audio, remplacer le 256k dans "-c:a libmp3lame -b:a 256k" par un nombre plus petit (par exemple 128k ou 92k)
        echo -n "Souhaitez-vous une passe ou deux passes ? Taper 1 pour une passe (plus rapide mais de moins bonne qualité) ou 2 pour deux passes (plus lent mais la vidéo finale est de meilleure qualité) :  "
        read passe
        if [ "$passe" = "1" ] ; then
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir convertis_x265
        #crée un répertoire où seront déplacés les fichiers convertis
            for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
            nice -19 ffmpeg -i "$i" -c:v "libx265" -b:v "${bitrate}k" -"x265"-params pass=1 -c:a libmp3lame -b:a 256k "$i.mkv"
            mv "$i.mkv" ./convertis_x265
            #déplace les fichiers convertis
            mv "$i" ./originaux
            #déplace les fichiers originaux
            done
        elif [ "$passe" = "2" ]; then
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir convertis_x265
        #crée un répertoire où seront déplacés les fichiers convertis
            for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
            nice -19 ffmpeg -y -i "$i" -c:v "libx265" -b:v "${bitrate}k" -"x265"-params pass=1 -an -f null /dev/null && \
            #première passe
            nice -19 ffmpeg -i "$i" -c:v "libx265" -b:v "${bitrate}k" -"x265"-params pass=2 -c:a libmp3lame -b:a 256k "$i.mkv"
            mv "$i.mkv" ./convertis_x265
            #déplace les fichiers convertis
            mv "$i" ./originaux
            #déplace les fichiers originaux
        #les lignes suivantes suivantes suppriment les fichiers temporaires de la première passe en cas d'interruption.
            rm x265_2pass.log
            rm x265_2pass.log.cutree
            rm x265_2pass.log.cutree.temp
            rm x265_2pass.log.temp
            rm x264_2pass.log
            rm x264_2pass.log.cutree
            rm x264_2pass.log.cutree.temp
            rm x264_2pass.log.temp
            done
        else
            echo "Il faut taper 1 ou 2, rien d'autre. Relancez le script !"
        fi
            rm x265_2pass.log
            rm x265_2pass.log.cutree
            rm x265_2pass.log.cutree.temp
            rm x265_2pass.log.temp
            rm x264_2pass.log
            rm x264_2pass.log.cutree
            rm x264_2pass.log.cutree.temp
            rm x264_2pass.log.temp

        convertion_par_lot_videos_en_265_une_passe_crf

        #!/bin/bash
        # conversion par lot de fichier video au format H265 avec audio en mp3 qualité 320k
        # nice -19 signifie que le programme aura la priorité la plus faible, ce qui ne devrait pas beaucoup ralentir l'exécution des autres programmes.
        # si vous souhaitez interrompre le programme pour avoir accès à tout le processeur, tapez l'instruction top puis identifiez le PID UTIL des processeurs ffmpeg concernés puis tapez kill - STOP numero_pid_util. Pour relancer le processus, tapez kill - CONT numero_pid_util
        
        echo "Ce script va réencoder vos vidéos (MKV, MP4, MTS, AVI, MOV, WEBM FLV) en H265, le son en MP3 256k et au format de conteneur MKV en 1 passe. Vous allez pouvoir choisir CRF (constant rate factor) pour la vidéo. Les extensions des vidéos peuvent être en minuscules ou majuscules mais pas un mélange des deux."
        echo -n "Entrez le CRF que vous souhaitez utiliser : (entre 1 et 51 - 1 pour la meilleure qualité, 51 pour la plus mauvaise) - 28 est recommandé : "
        read crf
        
        echo -n "Entrez la vitesse que vous souhaitez utiliser : (ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow) - votre choix joue sur la vitesse de traitement et la qualité. Superfast sera très rapide mais de moins bonne qualité. medium est le choix recommandé. Votre choix : "
        read speed
        
        # on peut modifier le fichier de sortie en ajoutant un répertoire : "$i.mkv" devient "/home/perso/mon_repertoire/$i.mkv"
        # les lignes (rm x265_2pass.log / rm x265_2pass.log.cutree / rm x265_2pass.log.cutree.temp / rm x265_2pass.log.temp) suppriment les fichiers générés lors des deux passes
        # pour conserver l'audio, remplacer -c:a libmp3lame -b:a 256k par -c:a copy
        # pour réduire la qualité audio, remplacer le 256k dans "-c:a libmp3lame -b:a 256k" par un nombre plus petit (par exemple 128k ou 92k)
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir convertis_x265
        #crée un répertoire où seront déplacés les fichiers convertis
        
            for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ;
            do
            nice -19 ffmpeg -i "$i" -c:v libx265 -crf "$crf" -preset "$speed" -c:a libmp3lame -b:a 256k "$i.mkv"
        
            mv "$i.mkv" ./convertis_x265
            #déplace les fichiers convertis
        
            mv "$i" ./originaux
            #déplace les fichiers originaux
            done
        
        #les lignes suivantes suivantes suppriment les fichiers temporaires de la première passe en cas d'interruption.
            rm x265_2pass.log
            rm x265_2pass.log.cutree
            rm x265_2pass.log.cutree.temp
            rm x265_2pass.log.temp
            rm x264_2pass.log
            rm x264_2pass.log.cutree
            rm x264_2pass.log.cutree.temp
            rm x264_2pass.log.temp

        convertion_par_lot_videos_en_xvid

        #!/bin/bash
        # ce script balaie tous les fichiers d'un même répertoire et va convertir les AVI en XVID et conserver le son d'origine
        # nice -19 signifie que le programme aura la priorité la plus faible, ce qui ne devrait pas beaucoup ralentir l'exécution des autres programmes.
        # si vous souhaitez interrompre le programme pour avoir accès à tout le processeur, tapez l'instruction top puis identifiez le PID UTIL des processeurs ffmpeg concernés puis tapez kill - STOP numero_pid_util. Pour relancer le processus, tapez kill - CONT numero_pid_util
        
        echo "Ce script va réencoder vos vidéos AVI en XVID, conserver le son d'origine et au format de conteneur MKV en 2 passes. Les extensions des vidéos (AVI ou avi) peuvent être en minuscules ou majuscules mais pas un mélange des deux. La convertion directe de MJPEG vers 265 pose des problèmes de couleurs. Il faut donc passer par XVID d'abord (voir https://stackoverflow.com/questions/71397605/ffmpeg-mjpeg-h-265-smeared-color-on-output-video-file )"
        # on peut modifier le fichier de sortie en ajoutant un répertoire : "$i.mkv" devient "/home/perso/mon_repertoire/$i.mkv"
        # pour conserver l'audio, remplacer -c:a libmp3lame -b:a 256k par -c:a copy
        # pour réduire la qualité audio, remplacer le 256k dans "-c:a libmp3lame -b:a 256k" par un nombre plus petit (par exemple 128k ou 92k)
        
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        
        mkdir convertis_xvid
        #crée un répertoire où seront déplacés les fichiers convertis
        
            for i in *.avi *.AVI ; do
            nice -19 ffmpeg -y -i "$i" -c:v mpeg4 -vtag xvid -b:v 16000k -pass 1 -an -f avi /dev/null
            ffmpeg -i "$i" -c:v mpeg4 -vtag xvid -b:v 16000k -pass 2 -c:a copy "$i.mkv"
        
            mv "$i.mkv" ./convertis_xvid
            #déplace les fichiers convertis
        
            mv "$i" ./originaux
            #déplace les fichiers originaux
        
            done

        convertion_vers_mkv_par_lot

        #!/bin/bash
        # conversion par lot de fichiers vers mkv - mofifier l'extension si nécessaire - supprimer les extensions d'origine avec krename ensuite. Attention, s'il y a déjà des fichiers MKV, ils seront reconvertis en MKV
        
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir convertis_mkv
        #crée un répertoire où seront déplacés les fichiers convertis
        
            for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
        
        
        #    autre chose trouvé sur internet avec bug : ffmpeg -flags +genpts -i "$i" -c copy -sn "$i.mkv"
        
        nice -19 ffmpeg -y -i "$i" -c:v copy -c:a copy "$i.mkv"
          mv "$i.mkv" ./convertis_mkv
            #déplace les fichiers convertis
            mv "$i" ./originaux
            #déplace les fichiers originaux
        
        done

        convertion_videos_en_son_par_lot

        #!/bin/bash
        # conversion par lot de fichiers vers mkv - mofifier l'extension si nécessaire - supprimer les extensions d'origine avec krename ensuite. Attention, s'il y a déjà des fichiers MKV, ils seront reconvertis en MKV
        
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir convertis_mkv
        #crée un répertoire où seront déplacés les fichiers convertis
        
            for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
        
        
        #    autre chose trouvé sur internet avec bug : ffmpeg -flags +genpts -i "$i" -c copy -sn "$i.mkv"
        
        nice -19 ffmpeg -y -i "$i" -c:v copy -c:a copy "$i.mkv"
          mv "$i.mkv" ./convertis_mkv
            #déplace les fichiers convertis
            mv "$i" ./originaux
            #déplace les fichiers originaux
        
        done

        convertir_son_en_mp3_garder_video

        #!/bin/bash
        echo -n "Ce script va convertir le son des videos en mp3 sans toucher la video et ajouter l'extension .MKV à la fin du fichier. Choisissez la qualité mp3 (256 recommandé) : "
        read bitratemp3
        
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir convertis_mp3
        #crée un répertoire où seront déplacés les fichiers convertis
        
        
        for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
        
            nice -19 ffmpeg -i "$i" -c:v copy -c:a libmp3lame -b:a "${bitratemp3}k" "$i.mkv"
        
            mv "$i.mkv" ./convertis_mp3
            #déplace les fichiers convertis
            mv "$i" ./originaux
            #déplace les fichiers originaux
        done

        extraire_image_precise_d_une_video

        #!/bin/bash
        
        
        echo -n "Entrez le numéro de l'image que vous souhaitez extraire (attention, la numérotation commence à 0 donc si vous souhaitez la frame 536, il faut saisir 535) "
        read num_frame
        
        
        for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
        
        
        
        nice -19 ffmpeg -i "$i" -vf "select=eq(n\,$num_frame)" -vframes 1 screenshot_frame_"$num_frame"_"$i".png
        
        done

        recuperer_bitrate_video_par_lot

        #!/bin/bash
        
        #recherche le bitrate des videos de façon récursive
        find . \( -iname "*.mkv" -or -iname "*.mov" -or -iname "*.mts" -or -iname "*.mp4" -or -iname "*.mpg" -or -iname "*.mpeg" -or -iname "*.flv" -or -iname "*.avi" -or -iname "*.webm" -or -iname "*.wmv" -or -iname "*.3gp" -or -iname "*.rm" -or -iname "*.asx" -or -iname "*.vob" -or -iname "*.f4v" -or -iname "*.mks" -or -iname "*.m4v" -or -iname "*.ogv" -or -iname "*.m2v"  -or -iname "*.mpv" -or -iname "*.ts" -or -iname "*.m2ts" -or -iname "*.avc" -or -iname "*.hevc" -or -iname "*.m1v" -or -iname "*.m2v" -or -iname "*.mpv" \) -print0 | xargs -0 -i{} sh -c " echo -n '{} ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*bitrate: //p' " > result_bitrate.csv
        #ecrit le bitrate de toutes les videos d'un dossier dans le fichier result_mts.csv.
        # Ouvrir avec tableur et choisir séparateur ESPACE pour mieux visualiser les bitrate

        recuperer_toutes_infos_video_par_lot

        #!/bin/bash
        
        #recherche les informations des videos
        find . \( -iname "*.mkv" -or -iname "*.mov" -or -iname "*.mts" -or -iname "*.mp4" -or -iname "*.mpg" -or -iname "*.mpeg" -or -iname "*.flv" -or -iname "*.avi" -or -iname "*.webm" -or -iname "*.wmv" -or -iname "*.3gp" -or -iname "*.rm" -or -iname "*.asx" -or -iname "*.vob" -or -iname "*.f4v" -or -iname "*.mks" -or -iname "*.m4v" -or -iname "*.ogv" -or -iname "*.m2v"  -or -iname "*.mpv" -or -iname "*.ts" -or -iname "*.m2ts" -or -iname "*.avc" -or -iname "*.hevc" -or -iname "*.m1v" -or -iname "*.m2v" -or -iname "*.mpv" \) -print0 | xargs -0 -i{} sh -c " echo -n '{} ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*Video: //p' " > result_toutes_les_infos.csv
        
        
        #ecrit les informations toutes les videos d'un dossier dans le fichier result_toutes_les_infos.csv.
        #Ouvrir avec tableur et choisir séparateur ESPACE pour mieux visualiser les bitrate

        stabiliser_video_par_lot_version

        #!/bin/bash
        # stabiliser des videos par lot
        
        echo -n "Sélectionnez la stabilité de la vidéo que vous souhaitez : 1 (très stable) jusqu'à 10 (très instable)  "
        read stabilite
        
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir stabilisee
        #crée un répertoire où seront déplacés les fichiers convertis
        
        for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
        
            nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$stabilite:accuracy=15 -f null - && \
        
        #shakiness=10 peut etre modifié en mettant shakiness = nombre_entre_1_et_10 : 1 video stable, 10 video très instable
        
            nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$stabilite:accuracy=15 -f null -&& nice -19 ffmpeg -i "$i" -vf vidstabtransform=smoothing=30:input="transforms.trf" "stabilisee_$i"
        
        rm transforms.trf
        
        mv "stabilisee_$i" ./stabilisee
            #déplace les fichiers convertis
            mv "$i" ./originaux
            #déplace les fichiers originaux
        done

        creer_video_cote_a_cote_par_lot

        #!/bin/bash
        #ce script va créer une vidéo à partir de deux vidéos, l'une que l'on peut nommer ma_video.mkv et l'autre qui doit alors se nommer stabilisee_ma_video.mkv
        #les deux vidéos seront côte à côte, ce qui permet de les comparer
        for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB ; do
        
        
        # la video d'origine correspond à $i et l'autre video doit commencer par "stabilisee" mais il suffit de changer le prefixe si necessaire
        
            ffmpeg -i "$i" -i "stabilisee_$i" -filter_complex "[0:v]setpts=PTS-STARTPTS, pad=iw*2:ih[bg]; [1:v]setpts=PTS-STARTPTS[fg]; [bg][fg]overlay=w" "cote_a_cote_$i"
        
        
        done

        supprimer_bande_son_video

        #!/bin/bash
        #supprimer la bande son de toutes les videos (au format voir ci-dessous) d'un même répertoire et crée un fichier MKV sans bande son. Ne réencode pas la vidéo.
        
        mkdir originaux
        # crée un répertoire où seront déplacés les fichiers originaux après conversion
        mkdir sans_son
        #crée un répertoire où seront déplacés les fichiers convertis
        
        
            for i in *.mkv *.MKV *.mp4 *.MP4 *.mts *.MTS *.avi *.AVI *.mov *.MOV *.webm *.WEBM *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.wmv *.WMV *.3gp *.3GP *.rm *.RM *.asx *.ASX *.vob *.VOB *.f4v *.F4V *.mks *.MKS *.m4v *.M4V *.ogv *.OGV *.m2v *.M2V *.mpv *.MPV *.ts *.TS *.m2ts *.M2TS *.avc *.AVC *.hevc *.HEVC *.m1v *.M1V *.m2v *.M2V *.mpv *.MPV ; do
            nice -19 ffmpeg -i "$i" -c copy -an "$i.mkv"
        
            mv "$i.mkv" ./sans_son
            #déplace les fichiers convertis
            mv "$i" ./originaux
            #déplace les fichiers originaux
        
        
            done

        stabiliser_video_par_lot_en_testant_les_10_qualites

        #!/bin/bash
        # test toutes les qualités de stabilisation pour un même fichier
        
        # test les 10 qualités de stabilité
        
                for qualite in 1 2 3 4 5 6 7 8 9 10 ; do
                    for i in *.mkv ; do
        
                    # nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$qualite:accuracy=15 -f null - && \
        
                    #shakiness=10 peut etre modifié en mettant shakiness = nombre_entre_1_et_10 : 1 video stable, 10 video très instable
        
                    nice -19 ffmpeg -i "$i" -vf vidstabdetect=shakiness=$qualite:accuracy=15 -f null -&& nice -19 ffmpeg -i "$i" -vf vidstabtransform=smoothing=30:input="transforms.trf" "stabilisee_$i_$qualite.mp4"
        
                    rm transforms.trf
        
                    done
        
        
                done

        En conclusion

        Il faut du temps et de l’envie pour se lancer dans cette aventure, même si le CPU fait 80 % du travail. Mais les 20 % restant ne sont pas à négliger. Entre les copier-coller qu’il ne faut pas rater, le classement des vidéos par bitrate ou dimension, les vidéos réencondées qu’il faut visionner (en accéléré) pour s’assurer qu’elles sont correctes, etc. il faut vraiment rester concentré pour éviter d’oublier une vidéo ou, pire, de l’effacer alors qu’elle n’a pas été réencondée.

        Les avantages

        Mais je ne regrette pas tout ce temps, surtout pour avoir revisionné quasiment toutes mes vidéos, celle de mes enfants bébé (le coup de vieux en pleine figure), les moments en famille, les grands-parents disparus… Cela a été des moments vraiment agréables.

        Cela m’a également permis de ranger des vidéos qui n’étaient pas dans le bon répertoire ou de renommer celles qui comportaient une erreur dans leur nom.

        J’ai maintenant toutes mes vidéos avec le même format de conteneur (MKV), et les mêmes codec vidéo et audio, ce qui facilitera grandement un réencodage ultérieur.

        Et puis – c’était l’un des objectifs – le gain de place est très important puisque mon disque dur est passé de 90 % à 48 % d’occupation (j’ai fait aussi un peu de ménage donc ce gain ne provient pas que du réencodage des vidéos).

        Les inconvénients

        Est-ce une bonne idée de mettre tous ses œufs dans le même panier (un seul format de conteneur, un seul codec video, un seul codec audio) , même si ces formats sont libres et, pour H265, lisible avec des logiciels libres, ce qui est tout de même une bonne assurance pour l’avenir ?

        Du temps, du temps, et encore du temps : il faut en avoir pour ce projet (mais j’espère que les scripts vous permettront d’en gagner)

        Cela consomme de l’énergie et, si beaucoup de gens veulent réencoder leurs vidéos, l’impact environnemental ne sera pas négligeable.

        L’opération monopolise un ordinateur (nice -19 ne m’a pas paru très efficace quand je lançais trois encodages simultanément!). Mais cela peut être l’occasion d’en utiliser un qui dort dans un placard et qui pourrait ainsi resservir.

        Si c’était à refaire…

        • Je le referai, sans aucun doute !
        • J’essaierai de conserver les métadonnées (date, heure, coordonnées GPS) de mes vidéos (même si les informations les plus importantes sont dans leur nom) ;
        • Je tenterai d’utiliser le GPU pour le réencodage, ce qui réduirait le temps de calcul.

        Note pour le prochain confinement :

        [1] : je n'ai pas réussi à trouver l'équivalent de la commande jhead -autorot -nf%Y_%m_%d_%H%M_%S_ *.jpg pour les videos

        Commentaires : voir le flux Atom ouvrir dans le navigateur

        ❌
        ❌