{
  "version": "2026-09-23-v16",
  "scope": "Essais exécutés sur des fichiers artificiels. Les résultats ne certifient pas tous les fichiers ni toutes les versions de logiciels.",
  "trials": [
    {
      "page": "word-pdf",
      "software": "LibreOfficeDev 26.8.0.0.alpha0",
      "platform": "Linux x86_64, mode sans interface graphique",
      "source": "document-controle.docx",
      "output": "document-controle.pdf",
      "pages": 2,
      "checks": [
        "Deux pages",
        "Tableau et codes 00123/00456 conservés",
        "Total 9,30 présent",
        "Texte sélectionnable et accents présents",
        "Repère final sur la seconde page"
      ],
      "scope": "Export PDF de ce document simple avec LibreOffice ; aucun essai de Microsoft Word ni de conversion PDF vers DOCX.",
      "bytes": 54948,
      "sha256": "23b1bf3dfb898ba652dc43e8e1a64cbd7b1ee3450a5f4070e7078c4bb70494a1",
      "command": [
        "soffice",
        "--headless",
        "--convert-to",
        "pdf",
        "--outdir",
        "sortie",
        "document-controle.docx"
      ],
      "softwareNote": "Version de développement alpha utilisée pour cet essai, pas une recommandation de version à installer.",
      "date": "2026-09-23",
      "heading": "Deux pages, tableau et caractères conservés",
      "result": "Le PDF obtenu conserve les deux pages, les codes 00123 et 00456, le total 9,30 et les caractères accentués. Le texte est sélectionnable. Les deux pages ont aussi été inspectées visuellement.",
      "limitations": "Export exécuté avec LibreOfficeDev 26.8.0.0.alpha0, une version de développement. Ce résultat porte sur ce document simple : aucun essai de Microsoft Word, de document signé ou de retour PDF vers DOCX n’est revendiqué.",
      "sourceBytes": 37952,
      "sourceSha256": "d3ee9a6c24f3fe297224ea723ae8a888b1dd3d9bad1a4bf1ae3a5836f6795ddb",
      "sourceUrl": "/donnees/exemples/v16/document-controle.docx",
      "outputUrl": "/donnees/exemples/v16/document-controle.pdf",
      "build": "2c87e51eeaa2b413ff4ae097b2705eea1995d8e5"
    },
    {
      "page": "mp4-mp3",
      "software": "ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers",
      "platform": "Linux x86_64",
      "source": "source.mp4",
      "output": "audio.mp3",
      "command": [
        "ffmpeg",
        "-n",
        "-i",
        "source.mp4",
        "-map",
        "0:a:0",
        "-vn",
        "-c:a",
        "libmp3lame",
        "-q:a",
        "2",
        "audio.mp3"
      ],
      "observed": {
        "programs": [],
        "streams": [
          {
            "codec_name": "mp3",
            "codec_type": "audio",
            "sample_rate": "44100"
          }
        ],
        "format": {
          "duration": "2.063673"
        },
        "selectedToneHz": 440
      },
      "bytes": 11204,
      "sha256": "f95dfd5df1f91f6d44671f561ec6717d73ee1aba099baa35bd50b51ebf7eea2d",
      "scope": "Exemple artificiel de deux secondes, image unie rouge et deux pistes sonores de 440/880 Hz ; aucun contenu tiers.",
      "date": "2026-09-23",
      "heading": "Une seule piste audio dans le MP3",
      "result": "Le MP4 source contient deux pistes audio : 440 Hz puis 880 Hz. La commande retient la première ; le MP3 décodé retrouve le signal de 440 Hz, à 44 100 échantillons/s, sans piste vidéo. Sa durée de conteneur est d’environ 2,064 s pour une source de 2 s.",
      "limitations": "Le léger dépassement de durée vient du cadrage et du remplissage de l’encodage MP3. Cet essai vérifie la sélection de piste et le format ; il ne constitue pas un test perceptif sur de la musique.",
      "sourceBytes": 39780,
      "sourceSha256": "6c5f66423a9a3ad0f4e3d2b01ac80b95281186bd7925be7184f0c806741d4cba",
      "sourceUrl": "/donnees/exemples/v16/source.mp4",
      "outputUrl": "/donnees/exemples/v16/audio.mp3"
    },
    {
      "page": "mov-mp4",
      "software": "ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers",
      "platform": "Linux x86_64",
      "source": "source.mov",
      "output": "copie.mp4",
      "command": [
        "ffmpeg",
        "-n",
        "-i",
        "source.mov",
        "-map",
        "0:v:0",
        "-map",
        "0:a:0?",
        "-c",
        "copy",
        "-movflags",
        "+faststart",
        "copie.mp4"
      ],
      "observed": {
        "programs": [],
        "streams": [
          {
            "codec_name": "h264",
            "codec_type": "video",
            "width": 160,
            "height": 90
          },
          {
            "codec_name": "aac",
            "codec_type": "audio",
            "sample_rate": "44100"
          }
        ],
        "format": {
          "duration": "2.000000"
        }
      },
      "bytes": 20974,
      "sha256": "47ca5ecf107da2fdc3d4dd0d78e4af27446486590f264002b63bae6bdc3b06f0",
      "scope": "Exemple artificiel de deux secondes, image unie rouge et deux pistes sonores de 440/880 Hz ; aucun contenu tiers.",
      "date": "2026-09-23",
      "heading": "Remuxage H.264 et AAC sans réencodage",
      "result": "Le MOV artificiel contient une vidéo H.264 et deux pistes AAC. Avec les options de sélection publiées ci-dessus, le MP4 obtenu contient la vidéo et la première piste audio ; la seconde piste est volontairement omise. La durée reste de 2 s.",
      "limitations": "Le succès avec H.264/AAC ne garantit pas la compatibilité d’un MOV contenant ProRes, un codec inconnu, des sous-titres ou plusieurs pistes à conserver. Inspectez votre source avant de réutiliser cette commande.",
      "sourceBytes": 39887,
      "sourceSha256": "21177e2b774e74426c3163dad3576ce95c3854d49f9888bbbc89ac5fb3fdc182",
      "sourceUrl": "/donnees/exemples/v16/source.mov",
      "outputUrl": "/donnees/exemples/v16/copie.mp4"
    },
    {
      "page": "mp4-webm",
      "software": "ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers",
      "platform": "Linux x86_64",
      "source": "source.mp4",
      "output": "copie.webm",
      "command": [
        "ffmpeg",
        "-n",
        "-i",
        "source.mp4",
        "-c:v",
        "libvpx-vp9",
        "-crf",
        "32",
        "-b:v",
        "0",
        "-c:a",
        "libopus",
        "copie.webm"
      ],
      "observed": {
        "programs": [],
        "streams": [
          {
            "codec_name": "vp9",
            "codec_type": "video",
            "width": 160,
            "height": 90
          },
          {
            "codec_name": "opus",
            "codec_type": "audio",
            "sample_rate": "48000"
          }
        ],
        "format": {
          "duration": "2.028000"
        }
      },
      "bytes": 20291,
      "sha256": "0d176ee2996b4689e1d13303e41105b1270c287efc2754b62fc3594e3dd62682",
      "scope": "Exemple artificiel de deux secondes, image unie rouge et deux pistes sonores de 440/880 Hz ; aucun contenu tiers.",
      "date": "2026-09-23",
      "heading": "Sortie VP9 et Opus vérifiée",
      "result": "La commande produit un conteneur WebM avec une vidéo VP9 de 160 × 90 pixels et une piste audio Opus. Le fichier est reconnu par FFprobe. La sélection automatique ne conserve qu’une des deux pistes audio de la source.",
      "limitations": "Un fond uni est facile à compresser : la taille de ce fichier ne prédit pas le gain sur une vidéo réelle. Précisez les options -map si vous devez choisir ou conserver des pistes particulières.",
      "sourceBytes": 39780,
      "sourceSha256": "6c5f66423a9a3ad0f4e3d2b01ac80b95281186bd7925be7184f0c806741d4cba",
      "sourceUrl": "/donnees/exemples/v16/source.mp4",
      "outputUrl": "/donnees/exemples/v16/copie.webm"
    },
    {
      "page": "video-gif",
      "software": "ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers",
      "platform": "Linux x86_64",
      "source": "source.mp4",
      "output": "extrait.gif",
      "command": [
        "ffmpeg",
        "-n",
        "-i",
        "source.mp4",
        "-t",
        "3",
        "-filter_complex",
        "fps=10,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse",
        "extrait.gif"
      ],
      "observed": {
        "programs": [],
        "streams": [
          {
            "codec_name": "gif",
            "codec_type": "video",
            "width": 480,
            "height": 270
          }
        ],
        "format": {
          "duration": "2.000000"
        }
      },
      "bytes": 2645,
      "sha256": "cd93a679bb993354b08f77aba979ed8d03e975ceca62d39ceaf036f850e7efbd",
      "scope": "Exemple artificiel de deux secondes, image unie rouge et deux pistes sonores de 440/880 Hz ; aucun contenu tiers.",
      "date": "2026-09-23",
      "heading": "Animation de 480 × 270 pixels sans son",
      "result": "La sortie GIF mesure 480 × 270 pixels et contient 20 images pour cet extrait de 2 s à 10 images/s. L’option -t 3 plafonne la durée à trois secondes ; elle ne rallonge pas une source plus courte.",
      "limitations": "La source de contrôle est un fond rouge uni. Elle vérifie dimensions, durée et structure animée, mais pas la qualité d’une palette sur des mouvements ou des dégradés complexes.",
      "sourceBytes": 39780,
      "sourceSha256": "6c5f66423a9a3ad0f4e3d2b01ac80b95281186bd7925be7184f0c806741d4cba",
      "sourceUrl": "/donnees/exemples/v16/source.mp4",
      "outputUrl": "/donnees/exemples/v16/extrait.gif"
    },
    {
      "page": "csv-xlsx",
      "date": "2026-09-23",
      "software": "Chromium 153.0.8010.0, Linux x86_64, mode sans interface graphique",
      "platform": "Navigateur local, téléchargements réels",
      "source": "csv-controle.csv",
      "output": "controle.xlsx",
      "sourceUrl": "/donnees/exemples/csv-controle.csv",
      "outputUrl": "/donnees/exemples/v16/controle.xlsx",
      "sourceBytes": 172,
      "sourceSha256": "01d172373ecfc1b3152a01910d6dfa6123fa7ca63ec03cf8b4e28764068cba49",
      "bytes": 3997,
      "sha256": "86a969e5a2fb5712474af9f98d3353fab90a26695c6071cc80c468fb7ae42781",
      "heading": "Codes, accents et cellules conservés dans le XLSX",
      "result": "Le fichier de contrôle a été importé en UTF-8, séparateur point-virgule, sans reconnaissance numérique. Les cinq lignes et quatre colonnes du classeur téléchargé conservent le code 00123, Élodie, 12,50, les guillemets et les retours à la ligne. La structure XML du XLSX a été contrôlée.",
      "limitations": "Le contrôle porte sur les valeurs écrites dans le classeur. Aucun essai d’ouverture de ce fichier avec Microsoft Excel n’est revendiqué."
    },
    {
      "page": "png-jpg",
      "date": "2026-09-23",
      "software": "Chromium 153.0.8010.0, Linux x86_64, mode sans interface graphique",
      "platform": "Navigateur local, téléchargements réels",
      "source": "repere-640x400.png",
      "output": "controle.jpg",
      "sourceUrl": "/donnees/exemples/repere-640x400.png",
      "outputUrl": "/donnees/exemples/v16/controle.jpg",
      "sourceBytes": 5877,
      "sourceSha256": "1e0bc933da1560dc1f95f3e86619f0ec2f6f85ba06b46c2778fdf89b786dab55",
      "bytes": 6394,
      "sha256": "5f7c2d3c8ca9eba542edfc522805fcd0b2b26f75a78e1891de70955604461a53",
      "heading": "JPEG téléchargé : dimensions et fond contrôlables",
      "result": "Le PNG de contrôle a été converti avec une qualité de 90 et un fond blanc. Le JPEG téléchargé mesure 640 × 400 pixels et contient trois canaux RVB, sans canal alpha. Comparez le rendu dans les zones initialement transparentes.",
      "limitations": "Le réencodage JPEG peut modifier les pixels. Ce contrôle ne valide pas tous les profils colorimétriques et aucune conservation des métadonnées n’est promise."
    },
    {
      "page": "png-webp",
      "date": "2026-09-23",
      "software": "Chromium 153.0.8010.0, Linux x86_64, mode sans interface graphique",
      "platform": "Navigateur local, téléchargements réels",
      "source": "repere-640x400.png",
      "output": "controle.webp",
      "sourceUrl": "/donnees/exemples/repere-640x400.png",
      "outputUrl": "/donnees/exemples/v16/controle.webp",
      "sourceBytes": 5877,
      "sourceSha256": "1e0bc933da1560dc1f95f3e86619f0ec2f6f85ba06b46c2778fdf89b786dab55",
      "bytes": 1810,
      "sha256": "6a0fda31f577f8e981a354b44cb321e909822950e7b09160f3b305cec29fb191",
      "heading": "WebP téléchargé : taille et canal alpha vérifiés",
      "result": "Le PNG de contrôle a été converti en WebP avec le réglage 90. Le fichier téléchargé mesure 640 × 400 pixels et possède un canal alpha. La conversion a utilisé l’encodeur du navigateur, sans transfert du fichier au serveur.",
      "limitations": "Le réglage 90 ne promet pas un encodage sans perte. Le poids et le rendu dépendent du contenu de l’image et du navigateur."
    },
    {
      "page": "image-icone",
      "date": "2026-09-23",
      "software": "Chromium 153.0.8010.0, Linux x86_64, mode sans interface graphique",
      "platform": "Navigateur local, téléchargements réels",
      "source": "repere-640x400.png",
      "output": "controle.ico",
      "sourceUrl": "/donnees/exemples/repere-640x400.png",
      "outputUrl": "/donnees/exemples/v16/controle.ico",
      "sourceBytes": 5877,
      "sourceSha256": "1e0bc933da1560dc1f95f3e86619f0ec2f6f85ba06b46c2778fdf89b786dab55",
      "bytes": 4762,
      "sha256": "51e0d0c715bd22c1e4a6674cb8b4e8ce4e2468978095613219de2f5084565462",
      "heading": "Une icône ICO contenant sept tailles",
      "result": "Le fichier ICO téléchargé contient sept tailles : 16, 24, 32, 48, 64, 128 et 256 pixels. Le conteneur a été ouvert par un décodeur indépendant pour contrôler la présence de ces images.",
      "limitations": "Le contrôle du conteneur ne garantit pas le choix de la bonne taille par chaque système. Vérifiez aussi la lisibilité de votre motif à 16 pixels."
    },
    {
      "page": "image-pdf",
      "date": "2026-09-23",
      "software": "Chromium 153.0.8010.0, Linux x86_64, mode sans interface graphique",
      "platform": "Navigateur local, téléchargements réels",
      "source": "repere-640x400.png",
      "output": "images.pdf",
      "sourceUrl": "/donnees/exemples/repere-640x400.png",
      "outputUrl": "/donnees/exemples/v16/images.pdf",
      "sourceBytes": 5877,
      "sourceSha256": "1e0bc933da1560dc1f95f3e86619f0ec2f6f85ba06b46c2778fdf89b786dab55",
      "bytes": 15568,
      "sha256": "5c3f44f2476bae53c9f4db34bad4d61a7c1caecf1ce6de34e2f6ff5119c44603",
      "heading": "Deux images assemblées en deux pages A4",
      "result": "Le PNG de contrôle puis le JPEG obtenu avec l’outil PNG/JPG ont été ajoutés, dans cet ordre. Le PDF téléchargé contient deux pages A4 portrait de 595,28 × 841,89 points environ. Qualité 90, résolution maximale 300 pixels/pouce, aucune rotation appliquée.",
      "limitations": "Ces pages restent des images : aucun OCR ni texte sélectionnable n’est créé. Cet essai de deux pages ne valide pas tous les fichiers ni les limites maximales de mémoire.",
      "additionalInputs": [
        {
          "url": "/donnees/exemples/v16/controle.jpg",
          "label": "JPEG de contrôle utilisé en deuxième page"
        }
      ]
    }
  ]
}
