Le MXF est un format orienté pour l'audiovisuel.
C'est un fichier binaire et, par convention, son extension est .mxf
A première vue, le format MXF semble obscur comparé aux autres fichiers contenus dans un DCP. Nous passons de fichiers XML, lisibles par un humain avec un simple éditeur de texte - à un fichier binaire totalement illisible par le simple quidam. Et pourtant, vous verrez que le format MXF est un format très simple dans son concept.
Notez que nous ne verrons que le MXF pour un DCP 1, il existe une grande variété de MXF ayant chacune ses spécificités. Il serait trop long et complexe d'être exhaustif.
Un container n'est qu'une enveloppe autour d'un autre format. Un format est - par exemple - un PNG, un MPEG-4, un JPEG.
Le MXF va être une surcouche par-dessus ce format avec quelques informations en plus. Sans ce format à l'intérieur, un MXF ne serait qu'une enveloppe avec des metadonnées.
Voyez cela comme un carton : vous placez différents éléments à l'intérieur. Cela peut être des images, des sons, des textes, des métadonnées ou d'autres types de données (nos fameux formats). Vous renfermez le tout, vous collez une étiquette dessus : vous avez votre "container" à vous.
Le MXF n'est pas lié à un format particulier, nous pouvons intégrer tout ce que l'on souhaite. C'est pour cela que nous avons des MXF intégrant différents formats, comme du JPEG2000, du DPX, du ProRes ou encore du MPEG-4.
Grâce à sa malléabilité, nous pouvons avoir des MXF spécifiques pour l'image, d'autres spécifiques pour les sons, d'autres spécifiques aux sous-titrages et même des MXF spécifiques pour des données auxiliaires telles que des données utilisées pour les cinémas 4DX (vous savez, les sièges qui bougent) !
Le format MXF DCP est défini principalement dans les normes suivantes :
Norme | Titre |
---|---|
SMPTE 377 | Material Exchange Format — File Format Specification |
SMPTE 410 | Material Exchange Format — Generic Stream Partition |
et agrémentées d'autres normes au travers de nombreuses documentations SMPTE :
Norme | Titre |
---|---|
SMPTE EG-377-3 | MXF — Engineering Guideline |
SMPTE EG-41 | MXF — Engineering Guideline |
SMPTE EG-42 | MXF — Descriptive Metadata |
SMPTE 379-1 | MXF — MXF Generic Container |
SMPTE 379-2 | MXF — MXF Constrained Generic Container |
SMPTE 380M | MXF — Descriptive Metadata Scheme-1 |
SMPTE 381-x | MXF — Mapping xxx Streams into the MXF |
SMPTE 382M | MXF — Mapping Wave Audio into the MXF Generic Container |
SMPTE 390 | MXF — Specialized Operational Pattern OP-Atom |
SMPTE 422 | MXF — Mapping JPEG2000 Codestreams into the MXF Generic Container |
DCP | |
SMPTE 429-2 | DCP - DCP Operational Constraints |
SMPTE 429-3 | DCP - Sound And Pictures Track File |
SMPTE 429-4 | DCP — MXF JPEG2000 Application |
SMPTE 429-6 | DCP — MXF Track File Essence Encryption |
SMPTE 429-20 | DCP - MXF Constraints |
Divers | |
SMPTE 336 | Data Encoding Protocol using Key-Length-Value (KLV) |
SMPTE 298 | Universal Labels for Unique Identification of Digital Data |
SMPTE RP-224 | SMPTE Universal Labels |
SMPTE ST-400 | SMPTE Labels Structure |
SMPTE ST-384 | Container : Uncompressed pictures |
SMPTE ST-382 | Container : Audio |
SMPTE ST-422 | Container : JPEG2000 (DCinema) |
SMPTE ST-394 | Container : MXF Generic Container (~AuxData) |
SMPTE ST-405 | Container : MXF Generic Container : Elements and Individual Data Items (~AuxData) |
Extras | |
The MXF Book | Introduction to the Material Exchange Format (ISBN: 9780240806938) |
Voyez l'intérieur d'un MXF comme cela :
Une simple suite de briques de Lego.
Chaque brique représente une partie de données spécifiques : une brique pour des en-têtes, une brique pour des métadonnées, une brique pour une image, etc.
Un MXF est donc une simple concaténation de plusieurs briques l'une à la suite de l'autre (ou l'une au-dessus de l'autre si vous voulez).
Chaque brique est surnommée KLV que nous verrons dans la suite KLV : Key-Length-Value
A travers les chapitres, nous allons analyser assez souvent en profondeur un MXF. Pour cela, nous allons utiliser des outils qui sont placés dans le répertoire d'asset MXF et que nous analyserons à travers les chapitres.
En attendant, je vous présente rapidement deux outils pour vous aider :
Le premier est notre visualiseur en ligne assez simple, aucun besoin d'installer de programme, il peut vous servir de suite.
Le second, beaucoup plus complet, notre analyseur de MXF qui va être utilisé tout le long des chapitres sur le MXF.
Pour vous aider, vous pouvez visualiser les différents KLV à l'aide de cet analyseur de MXF en ligne (encore en prototype) :
Vous pouvez également tester avec notre mxf_analyzer.py
et sa base de données. Cet outil est plus (beaucoup) plus complet que le visualiseur ci-dessus, il permet de lire les MXF plus en profondeur, d'obtenir les informations de chaque KLV, la capacité d'extraire chaque KLV, les données (comme JPEG2000, Wave, ..), de déchiffrer des MXF chiffrés, ... :
$ assets/MXF/mxf-analyzer/mxf_analyzer.py --help
usage:
-h, --help show this help message and exit
-f FILENAME <mxf> = mxf filename
-x EXTRACT <directory> = extract each KLV into files
-k KEY, --key KEY AES Key, ex. --key 00000000000000000000000000000000
-v, --verbose increase output verbosity
-n, --no-resolv Do not resolv UL (speed)
--filter FILTER filter by name
--fuzzy Fuzzy mode only (very slow)
--limit LIMIT stop after x klv parsed
--slow Slowdown parse to avoid flood loadavg
Avoir ce programme sous le coude lors de la lecture des différnts chapitres sur le MXF est un plus mais pas bloquant, j'ai placé des extraits de sorties et d'analyses de ce logiciel à chaque étape afin de présenter chaque partie d'un MXF.
Voici les différentes sections MXF que vous traverserez au cours de la documentation :
Avec une possibilité de déborder « un tout petit peu » sur l'Interoperable Master Format (IMF) ↩