Procédure

Vérifier une copie avec un manifeste ASC MHL

Un manifeste ASC MHL est un fichier XML qui liste chaque fichier d'un lot avec sa taille et son empreinte, calculées au départ. Pour contrôler une copie reçue, on recalcule les empreintes de ses fichiers et on les compare à celles du manifeste. Cette page montre comment le lire, comment faire cette comparaison avec trois outils, et ce qu'elle n'établit pas.

Par asa cinema · mis à jour le 22 septembre 2026

Deux manifestes à télécharger

Ils viennent d'une livraison réelle du 4 juillet 2026 : un DCP de 2,9 Go en six fichiers. Seuls les noms de machine ont été remplacés. Les empreintes, les tailles et la structure sont celles de l'envoi.

exemple-depart.mhlLe lot au départ, avec les empreintes calculées sur le poste de l'expéditeur. exemple-arrivee.mhlLe même lot à l'arrivée, recalculé sur le serveur après relecture complète.

Ce sont deux manifestes isolés : ils servent à lire le format et à comparer des valeurs. Pour une vérification avec MediaVerify ou ascmhl, ces outils ont besoin du dossier ascmhl/ complet, avec son historique, à côté des fichiers reçus.

Qu'est-ce qu'un manifeste ASC MHL

ASC MHL, pour ASC Media Hash List, est une spécification de l'American Society of Cinematographers. Elle sert à suivre les copies successives de fichiers, de la carte mémoire du tournage jusqu'à l'archivage. La spécification et l'outil de référence sont publics, sous licence MIT, sur github.com/ascmitc/mhl.

Le fichier est du XML lisible, avec l'extension .mhl et l'espace de noms urn:ASC:MHL:v2.0. Les empreintes peuvent être calculées en xxHash (XXH64, ou XXH3 en 64 et 128 bits), MD5, SHA1 ou C4. XXH64 est beaucoup plus rapide que MD5 sur des centaines de gigaoctets. Il sert à détecter les erreurs de copie, non à protéger contre une falsification.

Le format est public et documenté, et plusieurs outils indépendants le lisent.

Lire une entrée

Chaque fichier du lot correspond à un bloc <hash>. Celui du fichier audio, dans exemple-depart.mhl :

<!-- un fichier du lot -->
<hash>
  <path size="28085542" lastmodificationdate="2026-07-04T09:28:43+02:00">
    AUDIO_4b094b13-62f5-48d0-9e5b-fe00042f8917.mxf
  </path>
  <xxh64 action="original" hashdate="2026-07-04T09:39:07.872338+02:00">
    e7111ba47d09f468
  </xxh64>
</hash>

Quatre informations suffisent : le chemin du fichier, sa taille exacte en octets, son empreinte, et la date à laquelle l'empreinte a été calculée. action="original" indique que c'est la première fois qu'une empreinte est calculée pour ce fichier.

En tête du fichier, le bloc <roothash> résume le lot en deux empreintes : l'une pour le contenu, l'autre pour la structure, c'est-à-dire les noms et l'arborescence. Les comparer entre deux manifestes est le moyen le plus rapide de savoir si deux lots sont identiques.

Ce qui change d'un manifeste à l'autre

Deux manifestes du même lot, l'un calculé au départ et l'autre à l'arrivée, ne sont jamais identiques mot pour mot. Certaines valeurs doivent rester les mêmes, d'autres changent normalement. Dans les deux fichiers d'exemple :

ChampDépartArrivée
Empreinte de contenu du lot5f731ed57c5750585f731ed57c575058identique
Empreinte de structure5d0bf4dcd67daeea5d0bf4dcd67daeeaidentique
Empreinte du fichier audioe7111ba47d09f468e7111ba47d09f468identique
Taille du fichier audio2808554228085542identique
Date de création du manifeste09:39:09 +02:0007:49:35 +00:00change
Nom de la machineposte-dit.localserveur-sweepchange
Date de modification du fichier09:28:43 +02:0007:49:32 +00:00change

La date de modification dépend de l'outil de copie et de ses réglages : certains la conservent, d'autres non. Elle ne dit rien du contenu, qui se juge sur l'empreinte et la taille.

Renommer un fichier modifie aussi le manifeste, puisqu'il liste les fichiers par leur nom. Exemple : on renomme le PKL d'un DCP de pkl_ en PKL_ pour contourner un refus à l'ingest (en anglais). Le contenu ne change pas d'un octet, mais le manifeste d'origine cite encore l'ancien nom : pour lui, l'ancien fichier manque et le nouveau est inconnu. Avant de conclure à une altération, vérifiez ce qui a été modifié volontairement.

Vérifier une copie : trois méthodes

Les deux premières n'utilisent aucun outil de sweep.

MediaVerify, de Pomfort

Gratuit, pour macOS et Windows, avec une interface graphique. On lui donne le dossier reçu, avec son sous-dossier ascmhl/ ; il lit l'historique, recalcule les empreintes et affiche le résultat fichier par fichier. C'est l'outil courant chez les DIT et dans les laboratoires. pomfort.com/mediaverify

ascmhl, l'outil de référence de l'ASC

Gratuit et libre, en ligne de commande. Il travaille sur un dossier qui contient son historique, le sous-dossier ascmhl/.

# installation
pip3 install --upgrade ascmhl

# lire l'historique d'un dossier
ascmhl info -v /chemin/du/dossier/ascmhl/

# revérifier le dossier
ascmhl create /chemin/du/dossier/

ascmhl create relit tous les fichiers et compare leurs empreintes à l'historique. Il signale chaque fichier qui ne correspond pas et chaque fichier manquant, puis enregistre une nouvelle génération.

À la main, avec xxhsum

Pour un fichier à la fois, sans autre outil. xxhsum s'installe avec brew install xxhash sur macOS, ou apt install xxhash sur Debian et Ubuntu.

xxhsum -H64 AUDIO_4b094b13-62f5-48d0-9e5b-fe00042f8917.mxf
# e7111ba47d09f468  AUDIO_4b094b13-62f5-48d0-9e5b-fe00042f8917.mxf

La valeur affichée doit être celle du manifeste. Nous avons refait le calcul sur le fichier d'origine pour cette page : il donne bien e7111ba47d09f468. Par défaut, xxhsum affiche l'empreinte dans le même ordre d'octets que le manifeste, il n'y a rien à convertir. Vérifiez aussi que la taille correspond.

Ce qu'un manifeste ne dit pas

Une fois les empreintes recalculées et comparées, une correspondance indique que les fichiers n'ont pas changé depuis le calcul d'origine. Trois choses restent hors de portée de cette comparaison.

Qui l'a écrit. Un manifeste n'est pas signé. Si quelqu'un remplace à la fois des fichiers et leurs empreintes, le manifeste restera cohérent. Il sert à suivre les copies d'un lot. Il ne permet pas d'en authentifier l'origine.

La qualité du contenu. Un DCP mal masterisé reste cohérent avec son propre manifeste. L'intégrité des fichiers, leur conformité à la norme et la capacité du film à être projeté sont trois questions différentes.

L'usage qu'on en fait. Recevoir un manifeste ne sert à rien tant que personne ne l'utilise pour vérifier sa copie.

Et chez sweep

L'empreinte de chaque fichier est calculée sur le poste de l'expéditeur. Le serveur relit ensuite la copie reçue et la compare avant d'ouvrir le téléchargement. Le manifeste part avec la livraison, pour que chaque destinataire puisse vérifier sa propre copie comme décrit plus haut. Comment se passe un envoi.