mkvmerge -- Fusionne les flux multimédia en un fichier Matroska(tm)

# 1. Résumé

mkvmerge global options {-o out} options1 {file1} options2 {file2} @options-file.json

# 2. Description

Ce logiciel prend les entrées de plusieurs fichiers de médias et joint leurs flux (tous ou une sélection) dans un fichier Matroska(tm) ; voir le site Web Matroska.

Important:

L'ordre des options en ligne de commande est important. Les nouveaux utilisateurs devraient lire la section "Ordre des options" .

## 2.1. Options globales

Option | Description
--- | ---
-v, --verbose | Augmente la verbosité.
-q, --quiet | Supprime les messages d'état.
-o, --output file-name | Écrit vers le fichier file-name. Si la scission est utilisée, alors ce paramètre est traité un peu différemment. Voir l'explication pour l'option --split pour les détails.
-w, --webm | Crée un fichier conforme WebM. C'est aussi activé si l'extension du nom de fichier cible est "webm". Ce mode impose plusieurs restrictions. Les seuls codecs permis sont VP8, VP9 pour la vidéo et les pistes audio Opus, Vorbis. L'élément d'entête DocType est modifié en "webm". Pour les chapitres et les balises, seule une partie des éléments est permise. mkvmerge(1) retirera automatiquement tous les éléments non permis par la spécification.
--title titre | Définit le titre général pour le fichier cible, par ex. le nom du film.
--default-language language-code | Définit le code langue par défaut qui sera utilisé pour les pistes pour lesquelles aucune langue n'est définie avec l'option --language et pour lesquelles le conteneur source ne fournit pas de langue. Le code langue par défaut pour « undefined » est « und ».

## 2.2. Gestion des infos de segments (options globales)

Option | Description
--- | ---
--segmentinfo filename.xml | Lit les informations de segment depuis un fichier XML. Ce fichier peut contenir l'UID de famille de segment, l'UID de segment, les éléments d'UID suivants et précédents de segment. Un fichier d'exemple et un DTD sont inclus dans la distribution MKVToolNix. Voir la section relative aux fichiers XML d'infos de segments ci-dessous pour les détails.
--segment-uid SID1,SID2,... | Définit les UID de segment à utiliser. C'est une liste d'UID de segment de 128 bits séparés par une virgule et sous leur forme habituelle : nombres hexadécimaux avec ou sans le préfixe "0x", avec ou sans espaces et d'exactement 32 chiffres. Si le SID commence avec =, alors son reste est interprété comme le nom d'un fichier Matroska dont l'UID de segment est lu et utilisé. Chaque fichier créé contient un segment, et chaque segment a un UID de segment. Si plus d'UID de segment sont spécifiés que de segments sont créés, alors le surplus d'UID est ignoré. Si moins d'UID sont spécifiés que de segments sont créés, alors des UID aléatoires seront créés pour eux.

## 2.3. Gestion des balises et des chapitres (options globales)

Option | Description
--- | ---
--chapter-language language-code | Définit le code langue ISO 639-2 qui est écrit pour chaque entrée de chapitre. « eng » par défaut. Voir la section à propos des chapitres ci-dessous pour les détails. Cette option peut être utilisée pour des fichiers de chapitres simples et pour des fichiers source qui contiennent des chapitres mais pas d'informations sur la langue des chapitres, par ex. les fichiers MP4 et OGM. La langue définie avec cette option est aussi utilisée quand les chapitres sont générés avec --generate-chapters comme option.
--chapter-charset character-set | Définit le jeu de caractères utilisé pour la conversion vers UTF-8 des simples fichiers de chapitres. Voir la section à propos des fichiers texte et des jeux de caractères pour savoir comment mkvmerge(1) convertit les jeux de caractères. Ce commutateur s'appliquera aussi aux chapitres qui sont copiés depuis certains types de conteneur, par ex. les fichiers Ogg/OGM et MP4. Voir la section sur les chapitres ci-dessous pour les détails.
--chapter-sync d[,o[/p]] | Ajuste les horodatages des chapitres dans les sources suivantes de d ms. Alternativement, il est possible d'utiliser l'option --sync avec l'ID de piste spécial -2 (voir la section ID de pistes spéciaux). o/p : ajuste les horodatages de o/p pour corriger les dérives linéaires. p est par défaut 1 si omis. o et p peuvent être des nombre à virgules flottantes. Par défaut : aucune correction manuelle de la sync. (ce qui est la même chose que d = 0 et o/p = 1.0). Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--generate-chapters mode | mkvmerge(1) peut créer des chapitres automatiquement. Les deux modes suivants sont actuellement pris en charge : 'when-appending' – Ce mode crée un chapitre au début et un chapitre quand un fichier est ajouté. Ce mode fonctionne aussi avec les modes de découpage « parts: » et « parts-frames: ». Pour ces modes, un chapitre sera généré pour chaque plage d'horodatage ajoutée (celles qui débutent les horodatages sont préfixées avec « + »). Note: mkvmerge(1) nécessite une piste vidéo ou audio présente pour être en mesure de déterminer quand un nouveau fichier est ajouté. Si une piste vidéo ou plus sont mixées, la première est utilisée. Sinon la première piste audio est utilisée. 'interval:time-spec' – Ce mode crée un chapitre à intervalle fixe par time-spec. Le format est soit la forme HH:MM:SS.nnnnnnnnn ou un nombre suivi par une des unités 's', 'ms' ou 'us'. Example : --generate-chapters interval:45s Les noms pour les nouveaux chapitres sont contrôlés par l'option --generate-chapters-name-template. La langue est définie avec --chapter-language qui doit survenir avant --generate-chapters.
--generate-chapters-name-template template | Ceci définit le motif de nom pour les noms de chapitres générés par l'option --generate-chapters. Si l'option n'est pas utilisée, alors la chaîne par défaut 'Chapter <NUM:2>' sera utilisée. Il existe plusieurs variables qui peuvent être utilisées dans le motif et qui sont remplacées par leurs valeus réelles quand un chapitre est généré. La chaîne '<NUM>' sera remplacée par le numéro de chapitre. La chaîne '<START>' sera remplacée par l'horodatage de début de chapitre. Les chaînes '<FILE_NAME>' et '<FILE_NAME_WITH_EXT>' sont seulement remplies à la génération des chapitres pour les fichiers ajoutés. Elles seront remplacées par le nom du fichier ajouté avec et sans son extension, respectivement. Noter que seuls le nom de base du fichier et l'extension sont insérés, pas son dossier ou les lettres ou composants du lecteur. Il est possible de spécifier un nombre minimal de chiffres pour les numéros de chapitres avec '<NUM:places>', par ex. '<NUM:3>'. Le numéro résultant sera préfixé de zéros si le nombre de chiffres est moindre que spécifié. Il est possible de contrôler le format utilisé par l'horodatage de début avec <START:format>. Le format est par défaut '%H:%M:%S' si aucun n'est donné. Les codes de format valides sont : %h – heures %H – heures à deux chiffres %m – minutes %M – minutes à deux chiffres %s – secondes %S – secondes à deux chiffres %n – nanosecondes à neuf chiffres %<1-9>n – nanosecondes avec jusqu'à 9 chiffres (par ex. 3 chiffres avec %3n)
--cue-chapter-name-format format | mkvmerge(1) prend en charge la lecture des feuilles de montage CUE pour les fichiers audio comme source de chapitres. Les feuilles de montage CUE contiennent habituellement les entrées PERFORMER et TITLE pour chaque entrée d'index. mkvmerge(1) utilise ces deux chaînes pour construire le nom de chapitre. Avec cette option, le format utilisé pour ce nom peut être défini. Si cette option n'est pas donnée, alors mkvmerge(1) utilise par défaut le format '%p - %t' (l'artiste, suivi par une espace, un tiret, une autre espace et le titre). Si le format est donnée, alors tout excepté les métacaractères suivants est copié tel quel, et les métacaractères sont remplacés comme ceci : %p est remplacé par la chaîne du PERFORMER de l'entrée actuelle, %t st remplacé par la chaîne du TITLE de l'entrée actuelle, %n est remplacé par le numéro de la piste actuelle et %N est remplacé par le numéro de la piste actuelle précédé de 0 si < à 10.
--chapters file-name | Lit les informations de chapitres depuis le fichier file-name. Voir la section sur les chapitres ci-dessous pour les détails.
--global-tags file-name | Lit les balises globales depuis le fichier file-name. Voir la section sur les balises ci-dessous pour les détails.

## 2.4. Contrôle général en sortie (options globales avancées)

Option | Description
--- | ---
--track-order FID1:TID1,FID2:TID2,... | Cette option modifie l'ordre dans lequel les pistes d'un fichier source sont créées. L'argument est une liste de paires d'ID séparées par virgule. Chaque paire contient en premier l'ID fichier (FID1) qui est simplement le numéro du fichier sur la ligne de commande et commençant à 0. Le second est l'ID de piste (TID1) de ce fichier. Si quelques ID de pistes sont omis, alors ces pistes sont créées après que celles données par cette option ont été créées.
--cluster-length spec | Limite le nombre de blocs de données ou la durée des données dans chaque grappe. Le paramètre spec peut soit être un nombre n sans unité soit un nombre d suivi de 'ms'. Si aucune unité n'est utilisée, alors mkvmerge(1) placera au plus n blocs de données dans chaque grappe. Le nombre maximal de blocs est 65535. Si le nombre d est suivi de 'ms', alors mkvmerge(1) placera au plus d millisecondes de données dans chaque grappe. Le minimum pour d est '100 ms', et le maximum est '32000 ms'. Par défaut mkvmerge(1) place au plus 65535 blocs et 5000 ms de données par grappe. Les programmes essayant de trouver une certaine trame ne pourront effectuer qu'un positionnement sur une grappe (cluster), après quoi ils devront lire la grappe entière. Donc la création de grappes plus grandes pourrait conduire à un positionnement lent ou imprécis.
--clusters-in-meta-seek | Indique à mkvmerge(1) de créer un élément de méta-positionnement à la fin du fichier contenant toutes les grappes. Voir aussi la section sur la disposition des fichiers Matroska.
--timestamp-scale factor | Force le facteur d'échelle de l'horodatage à factor. Les valeurs valides sont dans l'intervalle 1000..10000000 ou la valeur spéciale -1. Normalement mkvmerge(1) utilisera une valeur de 1000000, ce qui signifie que les horodatages et les durées auront une précision de 1 ms. Pour les fichiers qui ne contiennent pas de piste vidéo mais au moins une piste audio, mkvmerge(1) choisira automatiquement un facteur d'échelle de code temporel de façon à ce que les horodatages et les durées aient une précision de un échantillon audio. Cela permet un positionnement et une extraction précise au prix de calculs plus importants. Si la valeur spéciale -1 est utilisée, alors mkvmerge(1) utilisera la précision des échantillons même si une piste vidéo est présente.
--enable-durations | Écrit les durées pour tous les blocs. Ceci va augmenter la taille du fichier, et n'offre pour le moment aucun avantage pour les lecteurs.
--no-cues | Indique à mkvmerge(1) de ne pas créer et écrire de données de montage qui peuvent être comparée à un index dans un AVI. Les fichiers Matroska(tm) peuvent être lus sans données de montage, mais le positionnement sera probablement imprécis et plus lent. À utiliser seulement en cas de contrainte forte d'espace ou pour test.. Voir aussi l'option --cues qui peut être spécifiée pour chaque fichier source.
--no-date | Par défaut mkvmerge(1) défini le champ d'information de segment « date » à la date et heure courante quand le multiplexage débute. Avec cette option ce champ n'est pas du tout écrit.
--disable-lacing | Désactive l'enlacement de toutes les pistes. Ceci va augmenter la taille du fichier, particulièrement s'il y a beaucoup de pistes audio. Cette option n'est pas destinée à être utilisée régulièrement.
--disable-track-statistics-tags | Normalement mkvmerge(1) écrira certaines balises avec des statistiques pour chaque piste. Si de telles balises sont déjà présentes, alors elles seront écrasées. Les balises sont BPS, DURATION, NUMBER_OF_BYTES et NUMBER_OF_FRAMES. Activer cette option empêchera mkvmerge(1) d'écrire ces balises et de modifier toutes les balises existantes avec les mêmes noms.
--disable-language-ietf | mkvmerge(1) écrit normalement les nouveaux éléments de langue IETF BCP 47 en plus des éléments traditionnels dans les entêtes de pistes, les chapitres et les balises. Si cette option est utilisée, seuls les éléments traditionnels sont écrits.

## 2.5. Scission, liage, ajout et concaténation de fichiers (plus d'options globales)

Option | Description
--- | ---
--split specification | Découpe le fichier cible après une taille ou une durée donnée. Merci de noter que les pistes peuvent être seulement coupées après une trame clé. Le point de coupe peut donc être un peu décalé par rapport à ce que l'utilisateur a spécifié. Pour le moment mkvmerge(1) prend en charge les modes suivants: Scission par taille. Syntaxe : --split [size:]d[k|m|g] Exemples : --split size:700m ou --split 150000000 Le paramètre d peut se terminer avec 'k', 'm' ou 'g' pour indiquer que la taille est en ko, Mo ou Go, respectivement. Sinon une taille en octets est supposée. Après que le fichier cible actuel a atteint cette limite de taille, un nouveau est démarré. Le préfixe 'size:' peut être omis pour des raisons de compatibilité. Scission après une durée. Syntaxe : --split [duration:]HH:MM:SS.nnnnnnnnn|ds Exemples : --split duration:00:60:00.000 ou --split 3600s Le paramètre doit soit avoir la forme HH:MM:SS.nnnnnnnnn pour spécifié la durée en précision à la nanoseconde soit être un chiffre d suivi de la lettre 's' pour une durée en secondes. HH est le nombre d'heures, MM le nombre de minutes, SS le nombre de secondes et nnnnnnnnn le nombre de nanosecondes. Les nombres d'heures et de nanosecondes peuvent être omis tous les deux. Il peut y avoir jusqu'à neuf chiffres de décimales. Après que la durée du contenu de la cible actuelle a atteint cette limite, un nouveau fichier cible est démarré. Le préfixe 'duration:' peut être omis pour des raisons de compatibilité. Scission après des horodatages spécifiques. Syntaxe : --split timestamps:A[,B[,C...]] Exemple : --split timestamps:00:45:00.000,01:20:00.250,6300s Les paramètres A, B, C etc. doivent tous avoir le même format que ceux utilisés pour la durée (voir ci-dessus). La liste des horodatages est séparée par des virgules. Après que le flux source a atteint le code temporel du point de scission, un nouveau fichier est créé. Alors le point de scission suivant dans cette liste est utilisé. Le préfixe 'timestamps:' ne doit pas être omis. Conservation de parties spécifiques en spécifiant des intervalles d'horodatage tout en en rejetant d'autres. Syntaxe : --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]] Exemples : --split parts:00:01:20-00:02:45,00:05:50-00:10:30 --split parts:00:01:20-00:02:45,+00:05:50-00:10:30 --split parts:-00:02:45,00:05:50- Le mode parts indique à mkvmerge(1) de conserver certaines plages d'horodatages et d'en rejeter d'autres. Les plages à conserver doivent être listées après le mot clé parts: et être séparées par des virgules. Une plage elle-même consiste en un horodatage de début et de fin dans le même format que les autres variations de --split acceptent (par ex. 00:01:20 et 80s réfère au même horodatage). Si un horodatage de début est omis, alors il sera par défaut défini selon l'horodatage de fin de la plage précédente. En l'absence, il sera par défaut défini au début du fichier (voir exemple 3) Si un horodatage de fin est omis, alors il sera par défaut défini à la fin des fichiers sources, ce qui indique simplement à mkvmerge(1) de conserver le reste (voir exemple 3) Normalement chaque plage sera écrite dans un nouveau fichier. Ceci peut être modifié de telle manière que des plages consécutives puissent être écrites vers le même fichier. Pour cela, l'utilisateur doit préfixer l'horodatage de début avec un +. Ceci indique à mkvmerge(1) de ne pas créer de nouveau fichier et plutôt d'ajouter la plage au même fichier vers lequel la plage précédente a été écrite. Les horodatages seront ajustés pour qu'il n'y ait pas de blanc dans le fichier cible même s'il y avait un blanc entre les deux plages dans le fichier source. Dans l'exemple 1 mkvmerge(1) va créer deux fichiers. Le premier contiendra le contenu débutant à 00:01:20 jusqu'à 00:02:45. Le second contiendra le contenu débutant à 00:05:50 jusqu'à 00:10:30. Dans l'exemple 2 mkvmerge(1) va créer un seul fichier. Celui-ci contiendra et le contenu débutant à 00:01:20 jusqu'à 00:02:45 et le contenu débutant à 00:05:50 jusqu'à 00:10:30. Dans l'exemple 3 mkvmerge(1) va créer deux fichiers. Le premier contiendra le contenu depuis le début des fichiers sources jusqu'à 00:02:45. Le second contiendra le contenu débutant à 00:05:50 jusqu'à la fin des fichiers sources. Note: Note : mkvmerge(1) prend seulement des décisions de scission aux positions des trames clés. Ceci s'applique au début et à la fin de chaque plage. Donc même si un horodatage de fin se situe entre deux trames clés, mkvmerge(1) continuera d'extraire les trames jusqu'à la trame clé suivante exclue. Conservation de parties spécifiques en spécifiant des intervalles de trames/champs tout en en rejetant d'autres. Syntaxe : --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]] Exemples : --split parts-frames:137-258,548-1211 --split parts-frames:733-912,+1592-2730 --split parts-frames:-430,2512- Le mode parts-frames indique à mkvmerge(1) de conserver certaines plages de numéros de trame/champ tout en en rejetant d'autres. Les plages à conserver doivent être listées près le mot clé parts-frames: et être séparées par des virgules. Une plage elle-même consite en un numéro de trame/champ de début et de fin. La numérotation débute à 1. Si un numéro de début est omis, alors il est défini par défaut au numéro de fin de la plage précédente. Si un numéro de fin est omis, alors il sera par défaut défini à la fin des fichiers sources, ce qui indique simplement à mkvmerge(1) de conserver le reste (voir l'exemple 3) Normalement chaque plage sera écrite dans un nouveau fichier. Ceci peut être modifié de telle manière que des plages consécutive soient écrites dans le même fichier. Pour cela, l'utilisateur doit préfixer le numéro de début avec un +. Ceci indique à mkvmerge(1) de ne pas créer un nouveau fichier mais d'ajouter la plage au même fichier dans lequel la plage précédente a été écrite. Les horodatages seront ajustés de telle manière qu'il n'y ait pas de blanc dans le fichier cible même s'il y en avait un dans les deux plages du fichier source. Note: Note : mkvmerge(1) prend seulement des décisions de scission aux positions de trames clés. Ceci s'applique au début et à la fin de chaque plage. Donc même si un numéro de trame/champ se situe entre deux trames clés, mkvmerge(1) continuera de générer les trames jusqu'à la prochaine trame clé exclue. Dans l'exemple 1, mkvmerge(1) va créer deux fichiers. Le premier contiendra le contenu depuis la première trame clé à ou après 137 jusqu'à la première trame clé à ou après 258 exclue. Le second contiendra le contenu débutant à 548 jusqu'à 1211. Dans l'exemple 2, mkvmerge(1) va créer seulement un fichier. Ce fichier contiendra les contenus débutant à 733 jusqu'à 912 et débutant à 1592 jusqu'à 2730. Dans l'exemple 3, mkvmerge(1) va créer deux fichiers. Le premier contiendra le contenu depuis le début des fichiers sources jusqu'à 430. Le second contiendra le contenu débutant à 2512 jusqu'à la fin des fichiers sources. Ce mode considère seulement la première piste vidéo qui est générée. Si aucune piste vidéo n'est générée, aucune scission n'est opérée. Note: Les nombres donnés avec cet argument sont interprétés selon le nombre de blocs Matroska(tm) en sortie. Un unique bloc Matroska(tm) contient soit une trame complète (contenu progressif) soit un unique champ (contenu entrelacé). mkvmerge ne distingue pas entre les deux et compte simplement le nombre de blocs. Par exemple : si on veut scinder après la 25ème trame complète avec du contenu entrelacé, on devrait utiliser 50 (deux champs par trame complète) comme point de scission. Scission après des trames/champs spécifiques. Syntaxe : --split frames:A[,B[,C...]] Exemple : --split frames:120,237,891 Les paramètres A, B, C etc. doivent tous être des entiers positifs. La numérotation débute à 1. La liste des numéros de trame/champ est séparée par des virgules. Après que le flux source a atteint le numéro actuel de trame/champ du point de scission, un nouveau fichier est créé. Ensuite le point de scission suivant donné par cette liste est utilisé. Le préfixe 'frames:' ne doit pas être omis. Ce mode considère seulement la première piste vidéo qui est générée. Si aucune piste vidéo n'est générée, aucune scission n'est opérée. Note: Les nombres donnés avec cet argument sont interprétés selon le nombre de blocs Matroska(tm) en sortie. Un unique bloc Matroska(tm) contient soit une trame complète (contenu progressif) soit un unique champ (contenu entrelacé). mkvmerge ne distingue pas entre les deux et compte simplement le nombre de blocs. Par exemple : si on veut scinder après la 25ème trame complète avec du contenu entrelacé, on devrait utiliser 50 (deux champs par trame complète) comme point de scission. Scission avant des chapitres spécifiques. Syntaxe : --split chapters:all ou --split chapters:A[,B[,C...]] Exemple : --split chapters:5,8 Les paramètres A, B, C etc. doivent tous être des entiers positifs. La numérotation débute à 1. La liste des numéros de chapitres est séparée par des virgules. La scission sera opérée juste avant la première trame clé dont l'horodatage est égal ou supérieur à l'horodatage de début pour les chapitres dont les numéros sont listés. Un chapitre débutant à 0 s n'est jamais pris en compte pour la scission et est ignoré. Le mot clé all peut être utilisé plutôt que de lister tous les numéros de chapitres manuellement. Le préfixe 'chapters:' ne doit pas être omis. Note: Le format Matroska(tm) prend en charge une profondeur arbitraire de structures de chapitres appelées « entrées d'édition » et « atomes de chapitre ». Toutefois, ce mode considère uniquement le niveau le plus élevé des chapitres parmi toutes les entrées d'édition. Pour ce mode de scission, le nom de fichier cible est traité différemment qu'en opération normale. Il peut contenir un printf comme l'expression '%d' et inclure une largeur de champ facultative, par ex. '%02d'. Si c'est le cas, alors le numéro de fichier actuel sera formaté de manière appropriée et inséré à ce point dans le nom de fichier. S'il n'y a pas un tel motif, alors un motif de '-%03d' est supposé juste avant l'extension de du fichier : '-o output.mkv' résulterait en 'output-001.mkv' et ainsi de suite. S'il n'y a pas d'extension, alors '-%03d' sera ajouté au nom. Un autre motif possible est '%c' ; il sera remplacé par le nom du premier chapitre du fichier. Noter que quand '%c' est présent, le motif '-%03d' ne sera pas ajouté automatiquement.
--link | Lie les fichiers avec un autre lors de la scission du fichier cible. Voir la section file linking ci-dessous pour les détails.
--link-to-previous segment-UID | Lie le premier fichier cible au segment avec l'UID de segment UID donné par le paramètresegment-UID. Voir la section file linking ci-dessous pour les détails. Si le SID commence avec =, alors son reste est interprété comme le nom d'un fichier Matroska dont l'UID de segment est lu et utilisé.
--link-to-next segment-UID | Lie le dernier fichier cible au segment avec l'UID de segment UID donné par le paramètresegment-UID. Voir la section file linking ci-dessous pour les détails. Si le SID commence avec =, alors son reste est interprété comme le nom d'un fichier Matroska dont l'UID de segment est lu et utilisé.
--append-mode mode | Détermine comment les horodatages sont calculés quand des fichiers sont ajoutés. Le paramètre mode peut avoir deux valeurs : 'file' qui est aussi la valeur par défaut et 'track'. Quand mkvmerge(1) ajoute une piste (appelée 'track2_1' à partir de maintenant) depuis un second fichier (appelé 'file2') à une piste (appelée 'track1_1') depuis le premier fichier (appelé 'file1'), alors il doit décaler tous les horodatages pour 'track2_1' d'un certain montant. Pour le mode 'file' ce montant est le plus haut horodatage rencontré dans 'file1' même si cet horodatage provenait d'une piste différente que 'track1_1'. En mode piste le décalage est le plus haut horodatage de 'track1_1'. Malheureusement mkvmerge(1) ne peut pas détecter quel mode utiliser de manière fiable. Par conséquent, le mode par défaut est 'file'. Le mode 'file' fonctionne habituellement mieux pour les fichiers ayant été créés indépendamment ; par ex. en ajoutant des fichiers AVI ou MP4. Le mode 'track' est susceptible de mieux fonctionner pour les sources qui sont essentiellement juste des parties d'un gros fichier, par ex. pour les fichiers VOB et EVO. Les pistes de sous-titres sont toujours traitées comme si le mode 'file' était actif même si c'est le mode 'track' qui est actif.
--append-to SFID1:STID1:DFID1:DTID1[,...] | Cette option contrôle à quelle piste une autre piste est ajoutée. Chaque spéc. contient quatre ID : un ID de fichier, un ID de piste, un second ID de fichier, et un second ID de piste. La première paire, « ID de fichier source » et « ID de piste source », identifie la piste qui sera ajoutée. La seconde paire, « ID de fichier destination » et « ID de piste destination », identifie la piste à laquelle la première est ajoutée. Si cette option a été omise, alors un mappage standard est utilisé. Ce mappage standard ajoute chaque piste du fichier actuel à une piste du fichier précédent avec le même ID de piste. Cela rend l'ajout plus facile, si un film a été scindé en deux parties et que les deux fichiers ont le même nombre de pistes et d'ID de pistes, avec la commande mkvmerge -o output.mkv part1.mkv +part2.mkv.
+ | Un unique « + » oblige le fichier suivant à être joint plutôt qu'ajouté. Le « + » peut aussi être placé devant le nom du fichier suivant. Les deux commandes suivantes sont donc équivalentes :
    $ mkvmerge -o complet.mkv fichier1.mkv + fichier2.mkv
    $ mkvmerge -o complet.mkv fichier1.mkv +fichier2.mkv
[ file1 file2 ] | Si plusieurs noms de fichiers sont contenus dans une paire de crochets, alors le second fichier et tous les suivants seront joints au premier nom de fichier entre les crochets. Ceci est une syntaxe alternative pour utiliser « + » entre les noms de fichiers. Les deux commandes suivantes sont donc équivalentes :
    $ mkvmerge -o complet.mkv fichier1.mkv + fichier2.mkv
    $ mkvmerge -o complet.mkv '[' fichier1.mkv fichier2.mkv ']'
= | Pour certains types de fichiers (flux programme MPEG = VOB) mkvmerge(1) recherche normalement des fichiers dans le même dossier que le fichier source, qui ont le même nom de base et diffèrent seulement par leur numérotation (par ex. 'VTS_01_1.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB' etc.). Le programme traite tous ces fichiers comme s'ils étaient concaténés en un seul gros fichier. Cette option, un unique « = », indique à mkvmerge de ne pas rechercher ces fichiers additionnels. Le « = » peut également être placé devant le nom de fichier suivant. Par conséquent, les deux commandes suivantes sont équivalentes :
    $ mkvmerge -o full.mkv = file1.vob
    $ mkvmerge -o full.mkv =file1.vob
( file1 file2 ) | Si de multiples noms de fichiers sont placés entre parenthèses, alors ces fichiers seront traités comme s'ils étaient concaténés en un gros fichier unique contenant chaque fichier l'un après l'autre. Ceci peut être utilisé pour par ex. les fichiers VOB provenant d'un DVD ou de flux de transport MPEG. Il ne peut pas être utilisé si chaque fichier contient son propre jeu d'entêtes, ce qui est habituellement le cas avec les fichiers autonomes AVI ou MP4. Placer un nom de fichier entre parenthèses empêche aussi mkvmerge(1) de rechercher d'autres fichiers avec le même nom de base tel que décrit dans l'option =. Par conséquent, ces deux lignes de commande sont équivalentes :
    $ mkvmerge -o out.mkv = file.mkv
    $ mkvmerge -o out.mkv '(' file.mkv ')'
Plusieurs choses devraient être notées : Il doit y avoir des espaces après la parenthèse ouvrante et avant celle fermante. Chaque paramètre entre parenthèses est interprété comme un nom de fichier. Par conséquent, toutes les options s'appliquant à ce fichier logique doivent être listées avant la parenthèse ouvrante. Quelques interfaces en lignes de commandes traitent les parenthèses en caractères spéciaux. Il faut donc les échapper ou les entourer de guillemets comme dans l'exemple ci-dessus.

## 2.6. Prise en charge des pièces jointes (plus d'options globales)

Option | Description
--- | ---
--attachment-description description | La description texte de la pièce jointe suivante. S'applique à la prochaine --attach-file ou à l'option --attach-file-once.
--attachment-mime-type MIME type | Type MIME de la pièce jointe suivante. S'applique à l'option suivante --attach-file ou --attach-file-once. Une liste des types MIME officiellement reconnus peut être trouvée sur la page d’accueil IANA. Le type MIME est obligatoire pour une pièce jointe.
--attachment-name name | Définit le nom qui sera stocké dans le fichier cible pour cette pièce jointe. Si cette option n'est pas fournie, alors le nom sera dérivé du nom de fichier de la pièce jointe tel que donné par l'option --attach-file ou --attach-file-once.
--attach-file file-name, --attach-file-once file-name | Crée un fichier joint dans le fichier Matroska(tm). Le type MIME doit avoir été défini avant que cette option puisse être utilisée. La différence entre les deux formes est que pendant la scission les fichiers joints avec --attach-file le sont à tous les fichiers cibles alors que ceux joints avec --attach-file-once le sont seulement au premier fichier créé. Si la scission n'est pas utilisée, alors les deux font la même chose. mkvextract(1) peut être utilisé pour extraire les fichiers joints d'un fichier Matroska(tm).

## 2.7. Options pouvant être utilisée à chaque fichier source

Option | Description
--- | ---
-a, --audio-tracks [!]n,m,... | Copie les pistes audio n, m etc. Les numéros sont les ID de pistes qui peuvent être obtenus avec le commutateur --identify. Ce ne sont pas seulement des numéros de pistes (voir la section ID de pistes). Par défaut : copie toutes les pistes audio. Au lieu des ID de piste il est possible de fournir des codes de langue ISO 639-2. Cela ne fonctionnera que pour les fichiers sources fournissant des balises de langue pour leurs pistes. Par défaut : copie toutes les pistes de ce type. Si les ID sont préfixés avec !, alors la signification est inversée : copier toutes les pistes semblables sauf celles listées après le !.
-d, --video-tracks [!]n,m,... | Copie les pistes vidéo n, m etc. Les numéros sont les ID de pistes qui peuvent être obtenus avec le commutateur --identify. Ce ne sont pas seulement des numéros de pistes (voir la section ID de pistes). Par défaut : copie toutes les pistes vidéo. Au lieu des ID de piste il est possible de fournir des codes de langue ISO 639-2. Cela ne fonctionnera que pour les fichiers sources fournissant des balises de langue pour leurs pistes. Si les ID sont préfixés avec !, alors la signification est inversée : copier toutes les pistes semblables sauf celles listées après le !.
-s, --subtitle-tracks [!]n,m,... | Copie les pistes de sous-titres n, m etc. Les numéros sont les ID de pistes qui peuvent être obtenus avec le commutateur --identify. Ce ne sont pas seulement des numéros de pistes (voir la section ID de pistes). Par défaut : copie toutes les pistes de sous-titres. Au lieu des ID de piste il est possible de fournir des codes de langue ISO 639-2. Cela ne fonctionnera que pour les fichiers sources fournissant des balises de langue pour leurs pistes. Si les ID sont préfixés avec !, alors la signification est inversée : copier toutes les pistes semblables sauf celles listées après le !.
-b, --button-tracks [!]n,m,... | Copie les pistes de boutons n, m etc. Les nombres sont des ID de pistes qui peuvent être obtenus avec le commutateur --identify. Ce ne sont pas simplement des numéros de pistes (voir la section ID de pistes). Par défaut : copier toutes les pistes de boutons. Au lieu des ID de piste il est possible de fournir des codes de langue ISO 639-2. Cela ne fonctionnera que pour les fichiers sources fournissant des balises de langue pour leurs pistes. Si les ID sont préfixés avec !, alors la signification est inversée : copier toutes les pistes semblables sauf celles listées après le !.
--track-tags [!]n,m,... | Copie les balises pour les pistes n, m etc. Les numéros sont les ID de pistes qui peuvent être obtenus avec le commutateur --identify. Ce ne sont pas seulement des numéros de pistes (voir la section ID de pistes). Par défaut : copie toutes les balises pour les pistes. Si les ID sont préfixés avec !, alors la signification est inversée : copier toutes les pistes semblables sauf celles listées après le !.
-m, --attachments [!]n[:all|first],m[:all|first],... | Copie les pistes de pièces jointes avec les ID n, m etc. vers tous les fichiers cibles ou seulement le premier. Chaque ID peut être suivie soit par ':all' (par défaut si rien n'est saisi) soit par ':first'. Si la scission est active, alors les pièces jointes dont les ID sont spécifiées avec ':all' sont copiées vers tous les fichiers cibles résultant alors que les autres sont copiées seulement vers le premier fichier cible. Si la scission n'est pas active, alors les deux variants ont le même effet. Par défaut les pièces jointes sont copiées vers tous les fichiers cibles. Si les ID sont préfixés avec !, alors la signification est inversée : copier toutes les pistes semblables sauf celles listées après le !.
-A, --no-audio | Ne copie aucune piste audio de ce fichier.
-D, --no-video | Ne copie aucune piste vidéo de ce fichier.
-S, --no-subtitles | Ne copie aucune piste de sous-titres de ce fichier.
-B, --no-buttons | Ne copie aucune piste de boutons de ce fichier.
-T, --no-track-tags | Ne copie aucune balise spécifique de piste de ce fichier.
--no-chapters | Ne copie aucun chapitre de ce fichier.
-M, --no-attachments | Ne copie aucune pièce jointe de ce fichier.
--no-global-tags | Ne copie aucune balises globales de ce fichier.
-y, --sync TID:d[,o[/p]] | Ajuste les horodatages de la piste avec l'ID TID de d ms. Les ID de pistes sont les mêmes que ceux donnés avec --identify (voir la section ID de pistes). o/p : ajuste les horodatages de o/p pour corriger les dérives linéaires. p est par défaut 1 si omis. o et p peuvent être des nombre à virgules flottantes. Par défaut : aucune correction manuelle de la sync. (ce qui est la même chose que d = 0 et o/p = 1.0). Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--cues TID:none|iframes|all | Contrôle pour quelles pistes les entrées de montage (index) sont créées pour la piste fournie (voir la section ID de pistes). 'none' inhibe la création des entrées de montage. Pour les 'iframes', seuls les blocs sans références avance et retour ( = trames I dans les pistes vidéo) sont placées dans la feuille de montage. 'all' oblige mkvmerge(1) à créer des entrées de montage pour tous les blocs, ce qui rendra le fichier très lourd. L'option par défaut est 'iframes' pour les pistes vidéo et de sous-titres, et 'none' pour les pistes audio. Voir aussi l'option --no-cues qui inhibe la création d'entrées de montage CUES quelque soit l'option --cues utilisée. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--default-track TID[:bool] | Pose le signal « Piste par défaut » pour la piste donnée (voir section ID de pistes) si l'argument facultatif bool est défini à 1 ou s'il n'est pas présent. Ce signal sera défini si le conteneur de la source ne fournit pas cette information et si l'utilisateur ne le spécifie pas via cette option. Si l'utilisateur ne sélectionne pas explicitement une piste lors de la lecture, le lecteur devrait sélectionner une des pistes avec le signal « Piste par défaut » posé, prenant en compte les préférences utilisateurs telle que la langue préférée. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--forced-track TID[:bool] | Pose le signal « Affichage forcé » pour la piste donnée (voir la section ID de pistes) si l'argument facultatif bool n'est pas présent. Utiliser ceci pour les pistes contenant du texte à l'écran ou des dialogues en langues étrangères. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--hearing-impaired-flag TID[:bool] | Pose le signal « Malentendant » pour la piste donnée (voir la section ID de pistes) si l'argument facultatif bool est défini à 1 ou s'il n'est pas présent. Ce signal peut être posé si la piste est adaptée aux utilisateurs malentendants. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--visual-impaired-flag TID[:bool] | Pose le signal « Malvoyant » pour la piste donnée (voir la section ID de pistes) si l'argument facultatif bool est défini à 1 ou s'il n'est pas présent. Ce signal peut être posé si la piste est adaptée aux utilisateurs malvoyants. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--text-descriptions-flag TID[:bool] | Pose le signal « Audiodescription » pour la piste donnée (voir la section ID de pistes) si l'argument facultatif bool est défini à 1 ou s'il n'est pas présent. Ce signal peut être posé si la piste contient l'audiodescription de contenu vidéo adaptée à la lecture vocale pour l'utilisateur malvoyant Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--original-flag TID[:bool] | Pose le signal « Langue d'origine » pour la piste donnée (voir la section ID de pistes) si l'argument facultatif bool n'est pas présent. Ce signal peut être posé si la piste est dans la langue d'origine du contenu (pas une traduction). Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--commentary-flag TID[:bool] | Pose le signal « Commentaire » pour la piste donnée (voir la section ID de pistes) si l'argument facultatif bool est défini à 1 ou s'il n'est pas présent. Ce signal peut être posé si la piste contient des commentaires. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
--blockadd TID:level | Conserve seulement les BlockAdditions jusqu'au niveau level pour la piste fournie. Par défaut tous les niveaux sont conservés. Cette option affecte seulement certains types de codecs comme WAVPACK4.
--track-name TID:name | Définit le nom de piste pour la piste fournie (voir la section ID de pistes) à name.
--langue TID:langue | Définit la langue pour la piste donnée (voir la section ID de pistes). Les codes langue ISO 639-2 et de pays ISO 639-1 sont autorisés. Les codes de pays seront convertis automatiquement en codes langue. Toutes les langues, ainsi que leurs codes ISO 639-2, peuvent être listées avec l'option --list-languages. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.
-t, --tags TID:file-name | Lit les balises pour la piste avec le numéro TID depuis le fichier file-name. Voir la section balises ci-dessous pour les détails.
--aac-is-sbr TID[:0|1] | Indique à mkvmerge(1) que la piste avec l'ID TID est SBR AAC (aussi connu sous HE-AAC ou AAC+). Cette option est nécessaire si a) le fichier source file est un fichier AAC (pas pour un fichier Matroska(tm)) et b) le fichier AAC contient des données SBR AAC. La raison pour ce commutateur est qu'il est techniquement impossible de distinguer automatiquement des données normales AAC de données SBR AAC sans décoder une trame AAC complète. Comme il y a plusieurs problèmes de brevets avec les décodeurs AAC, mkvmerge(1) n'assurera jamais cette phase de décodage. Donc pour les fichiersSBR AAC ce commutateur est obligatoire. Le fichier résultant de l'omission de ce commutateur pourrait ne pas être lu correctement ou du tout. Si le fichier source est un fichier Matroska(tm), alors le CodecID devrait être suffisant pour détecter SBR AAC. Toutefois si CodecID est faux, alors ce commutateur pourra être utilisé pour corriger cela.. Si mkvmerge(1) détecte incorrectement qu'un fichier AAC est SBR, alors il est possible d'ajouter ':0' à l'ID de piste.
--reduce-to-core TID | Quelques codecs audio ont un cœur avec perte et des extensions facultatives qui implémentent un décodage sans perte. Cette option indique à mkvmerge(1) de copier seulement le cœur mais pas les extensions. Par défaut mkvmerge(1) copie le cœur et les extensions. Actuellement, seules les pistes DTS sont affectées par cette option. Les pistes TrueHD qui contiennent un cœur AC-3 embarqué sont plutôt présentées en deux pistes séparées que l'utilisateur peut sélectionner pour copier. Pour DTS un tel schéma ne fonctionnerait pas parce que les extensions HD ne peuvent pas être décodées par elles-mêmes – à la différence des données TrueHD.
--remove-dialog-normalization-gain TID | Quelques codecs audio ont des champs d'entêtes qui indiquent au décodeur ou lecteur d'appliquer un gain (habituellement négatif) pour la normalisation des dialogues. Cette option indique à mkvmerge(1) de retirer ou minimiser ce gain en modifiant les champs d'entêtes correspondants. Seules les pistes AC-3, DTS et TrueHD sont actuellement concernées par cette option.
--timestamps TID:file-name | Lit les horodatages à utiliser pour l'ID de piste spécifique depuis file-name. Ces horodatages écrasent de force les horodatages que mkvmerge(1) calcule normalement. Lire la section fichiers externes d'horodatage.
--default-duration TID:x | Force la durée par défaut d'une piste donnée à la valeur spécifiée. Modifie aussi les horodatage de la piste pour correspondre à la durée par défaut. L'argument x doit être postfixé avec 's', 'ms', 'us', 'ns', 'fps', 'p' ou 'i' pour spécifier la valeur de la durée par défaut en secondes, millisecondes, microsecondes, nanosecondes, 'trames par seconde', 'trames progressives par seconde' ou 'trames entrelacées par seconde' respectivement. Le nombre x peut lui-même être un nombre à virgule ou une fraction. Si la durée par défaut n'est pas forcée, alors mkvmerge essayera de dériver la durée par défaut de la piste depuis le conteneur et/ou le flux binaire encodé pour certains types de pistes, par ex. AVC/H.264 ou MPEG-2. Cette option peut aussi être utilisée pour modifier les FPS des pistes vidéo sans avoir à utiliser un fichier externe d'horodatages.
--fix-bitstream-timing-information TID[:0|1] | Normalement, mkvmerge(1) ne modifie pas l'information temporelle (vitesse de trame/champ) stockée dans le flux binaire de données vidéo. Avec cette option, cette information est ajustée pour correspondre celle du conteneur. L'information de timing du conteneur peut provenir de sources variées : de la ligne de commande (voir l'option --default-duration), du conteneur source ou dérivée du flux binaire. Note: Ceci a été implémenté pour les pistes vidéo AVC/H.264 pour le moment.
--compression TID:n | Sélectionne la méthode de compression à utiliser pour la piste. Note : le lecteur doit aussi prendre en charge cette méthode. Les valeurs valides sont 'none', 'zlib' et 'mpeg4_p2'/'mpeg4p2'. La méthode de compression « mpeg4_p2 »/« mpeg4p2 » est une méthode spéciale de compression appelée « header removal » qui n'est disponible que pour les pistes vidéo MPEG4 part 2. La compression par défaut pour certains types de sous-titres est 'zlib'. Cette méthode de compression est aussi celle que presque toutes les applications de lecture prennent en charge. La prise en charge d'autres méthodes de compression que 'none' n'est pas assurée.

## 2.8. Options ne s'appliquant qu'aux pistes vidéo

Option | Description
--- | ---
-f, --fourcc TID:FourCC | Force le code FourCC à la valeur spécifiée. Ne fonctionne que pour les pistes vidéo en « mode compatibilité MS ».
--display-dimensions TID:widthxheight | Les fichiers Matroska(tm) contiennent deux valeurs qui définissent les propriétés d'affichage qu'un lecteur devrait en compte pour la mise à l'échelle de l'image : largeur et hauteur d'affichage. Ces valeurs peuvent être définies avec cette option, par ex. '1:640x480'. Une autre manière de définir les valeurs est d'utiliser les options --aspect-ratio ou --aspect-ratio-factor (voir ci-dessous). Ces options sont mutuellement exclusives.
--aspect-ratio TID:ratio|width/height | Les fichiers Matroska(tm) contiennent deux valeurs qui définissent les propriétés d'affichage qu'un lecteur devrait prendre en compte pour la mise à l'échelle de l'image : largeur et hauteur d'affichage. Avec cette option mkvmerge(1) calculera automatiquement les largeur et hauteur d'affichage selon les largeur et hauteur d'origine de l'image' et du ratio d'aspect donné par cette option. Le ratio d'aspect peut être donné soit par un ratio en nombre flottant soit par comme une fraction de 'width/height', par ex. '16/9'. Une autre manière de définir les valeurs est d'utiliser les options --aspect-ratio-factor ou --display-dimensions (voir ci-dessus et ci-dessous). Ces options sont mutuellement exclusives.
--aspect-ratio-factor TID:factor|n/d | Une autre manière de définir le ratio d'aspect est de spécifier un factor. Le ratio d'aspect d'origine est d'abord multiplié par ce factor puis est utilisé comme ratio d'aspect cible par la suite. Une autre manière de définir les valeurs est d'utiliser les options --aspect-ratio ou --display-dimensions (voir ci-dessous). Ces options sont mutuellement exclusives.
--cropping TID:left,top,right,bottom | Définit les paramètres de déformation des pixels d'une piste vidéo sur les valeurs données.
--colour-matrix-coefficients TID:n | Définit les coefficients de matrice de la vidéo utilisés pour dériver les valeurs de luma et de chroma depuis les couleurs primaires rouge, vert et bleu. Le paramètre n est un entier allant de 0 à 10. Les valeurs valides et leur signification sont : 0: GBR, 1: BT709, 2: non spécifié, 3: réservé, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 luminance non constante, 10: BT2020 luminance constante
--colour-bits-per-channel TID:n | Définit le nombre de bits codés pour un canal de couleur. Une valeur de 0 indique que le nombre de bits n'est pas spécifié.
--chroma-subsample TID:hori,vert | La quantité de pixels à retirer dans les canaux Cr et Cb pour chaque pixel non retiré horizontalement/verticalement. Exemple : pour une vidéo avec un sous-échantillonnage chroma 4:2:0, le paramètre devrait être défini à TID:1,1.
--cb-subsample TID:hori,vert | La quantité de pixels à retirer dans les canaux Cr et Cb pour chaque pixel non retiré horizontalement/verticalement. Cela s'additionne à --chroma-subsample. Exemple : pour une vidéo avec un sous-échantillonnage chroma 4:2:1, le paramètre --chroma-subsample devrait être défini à TID:1,0 et Cb-subsample devrait être défini à TID:1,0.
--chroma-siting TID:hori,vert | Définit comment la chroma est localisée horizontalement/verticalement. (0: non spécifié, 1: co-localisé en haut, 2: moitié).
--colour-range TID:n | Définit l'écrêtage de l'intervalle de couleurs (0: non spécifié, 1: intervalle broadcast, 2: intervalle entier (pas d'écrêtage), 3: défini par MatrixCoefficients/TransferCharacteristics).
--colour-transfer-characteristics TID:n | Les caractéristiques de transfert de la vidéo. Les valeurs valides et leur signification sont : 0: réservé, 1: ITU-R BT.709, 2: non spécifié, 3: réservé, 4: courbe gamma 2.2, 5: courbe gamma 2.8, 6: SMPTE 170M, 7: SMPTE 240M, 8: linéaire, 9: log, 10: racine de log, 11: IEC 61966-2-4, 12: gamut de couleur étendu ITU-R BT.1361, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit, 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--colour-primaries TID:n | Définit les couleurs primaires de la vidéo. Les valeurs valides et leur signification sont : 0: réservé, 1: ITU-R BT.709, 2: non spécifié, 3: réservé, 4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: phosphores JEDEC P22
--max-content-light TID:n | Définit la brillance maximale d'un pixel unique (Niveau de Contenu de Lumière Maximal - Maximum Content Light Level) en candelas par mètre carré (cd/m²). La valeur de n devrait être un entier non négatif.
--max-frame-light TID:n | Définit la brillance maximale d'une trame complète unique (Niveau de Contenu de Lumière Maximal - Maximum Content Light Level) en candelas par mètre carré (cd/m²). La valeur def ndevrait être un entier non négatif.
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y | Définit les coordonnées de chromaticité du rouge/vert/bleu définies selon CIE 1931.
--white-colour-coordinates TID:x,y | Définit les coordonnées de chromaticité du blanc définies selon CIE 1931.
--max-luminance TID:float | Définit la luminance maximale en candelas par mètre carré (cd/m²). La valeur devrait être inférieure à 9999.99.
--min-luminance TID:float | Définit la luminance minimale en candelas par mètre carré (cd/m²). La valeur devrait être inférieure à 999.9999.
--projection-type TID:method | Définit la méthode de projection vidéo utilisée. Les valeurs valides sont 0 (projection rectangulaire), 1 (projection équirectangulaire), 2 (projection en carte cubique) et 3 (projection en treillis).
--projection-private TID:data | Définit des données privées qui s'appliquent seulement à une projection spécifique. Les données doivent être fournies en nombres hexadécimaux avec ou sans le préfixe "0x" avec ou sans espaces.
--projection-pose-yaw TID:float | Spécifie une rotation en lacet de la projection.
--projection-pose-pitch TID:float | Spécifie une rotation en tangage de la projection.
--projection-pose-roll TID:float | Spécifie une rotation en roulis de la projection.
--field-order TID:n | Définit l'ordre de champ pour la piste vidéo avec l'ID de piste TID. L'ordre doit être l'un de ces nombres : 0: progressif ; 1: entrelacé avec le champ du haut affiché en premier et le champ du haut stocké en premier ; 2: ordre de champ indéterminé ; 6: entrelacé avec le champ du bas affiché en premier et le champ du bas stocké en premier ; 9: entrelacé avec le champ du bas affiché en premier et le champ du haut stocké en premier ; 14: entrelacé avec le champ du haut affiché en premier et le champ du bas stocké en premier
--stereo-mode TID:n|keyword | Définit le mode stéréo pour la piste vidéo avec l'ID de piste TID. Le mode peut soit être un nombre n entre 0 et 14 soit l'un de ces mots clés : 'mono', 'side_by_side_left_first', 'top_bottom_right_first', 'top_bottom_left_first', 'checkerboard_right_first', 'checkerboard_left_first', 'row_interleaved_right_first', 'row_interleaved_left_first', 'column_interleaved_right_first', 'column_interleaved_left_first', 'anaglyph_cyan_red', 'side_by_side_right_first', 'anaglyph_green_magenta', 'both_eyes_laced_left_first', 'both_eyes_laced_right_first'.

## 2.9. Options ne s'appliquant qu'aux pistes de sous-titres texte

Option | Description
--- | ---
--sub-charset TID:character-set | Définit le jeu de caractères pour la conversion vers UTF-8 des sous-titres UTF-8 pour l'ID de piste donné. Si non spécifié, le jeu de caractères sera déduit de la « locale » courante. Noter qu'un jeu de caractères n'est pas requis pour les sous-titres lus depuis des fichiers Matroska(tm) ou des flux Kate, car ils sont toujours stockés en UTF-8. Voir la section à propos des fichiers texte et des jeux de caractères pour savoir comment mkvmerge(1) convertit les jeux de caractères. Cette option peut être utilisée de multiples fois pour un fichier source en s'appliquant à plusieurs pistes par sélection de différents ID de pistes à chaque fois.

## 2.10. Autres options

Option | Description
--- | ---
-i, --identify file-name | Laissera mkvmerge(1) analyser le fichier unique et rapporter son type, les pistes contenues dans le fichier et leurs ID de pistes. Si cette option est utilisée, alors la seule autre option permise est le nom de fichier. Le format de sortie utilisé pour le résultat peut être modifié avec l'option --identification-format.
-J file-name | Ceci est un alias pratique pour "--identification-format json --identify file-name".
-F, --identification-format format | Détermine le format cible utilisé par l'option --identify . Les formats suivants sont pris en charge : text (par défaut si cette option n'est pas utilisée) et json. Le format text est court et lisible. Il consiste en une ligne par élément trouvé (conteneur, pistes, pièces jointes, etc.). Ce format n'est pas destiné à être analysé. La sortie sera traduite dans la langue qu'mkvmerge(1) utilise (voir aussi --ui-language). Le format json génère une représentation JSON lisible par machine. Ce format suit le schéma JSON décrit dans le fichier suivant : mkvmerge-identification-output-schema-v14.json Toutes les versions du schéma JSON sont disponibles en ligne et dans les archives publiées du code source.
--probe-range-percentage percentage | Les types de fichiers tels que les flux de programme et de transport MPEG (.vob, .m2ts) nécessite une certaine quantité de données à examiner afin de détecter toutes les pistes contenues dans le fichier. Cette quantité est de 0.3% de la taille du fichier source ou 10 Mo, selon la plus élevée. Si les pistes sont connues pour être présentes mais non trouvées, alors le pourcentage à analyser peut être modifié avec cette option. Un minimum de 10 Mo est requis et ne peut pas être modifié.
-l, --list-types | Liste les types de fichiers source pris en charge.
--list-languages | Liste toutes les langues et leurs codes ISO 639-2 qui peuvent être utilisées avec l'option --language.
--priority priority | Définit la priorité du processus exécuté avec mkvmerge(1). Les valeurs valides sont 'lowest', 'lower', 'normal', 'higher' et 'highest'. Si absente, alors 'normal' est utilisé. Sur les systèmes Unix, mkvmerge(1) utilisera la fonction nice(2). Par conséquent, seulement le super utilisateur peut utiliser 'higher' et 'highest'. Sur Windows, toutes les valeurs sont utilisables par tous les utilisateurs. Sélectionner 'lowest' oblige aussi mkvmerge(1) à sélectionner la priorité E/S ralentie en plus de la priorité processus la plus petite possible.
--command-line-charset character-set | Définit le jeu de caractères pour convertir les chaînes données en ligne de commande. C'est par défaut le jeu de caractères fourni par la « locale » actuelle du système. Ce paramètre s'applique aux arguments des options suivantes : --title, --track-name et --attachment-description.
--output-charset character-set | Définit le jeu de caractères dans lequel les chaînes en sortie sont converties. Par défaut, celui-ci correspond à celui donné par la « locale » du système.
-r, --redirect-output file-name | Écrit tous les messages vers le fichier file-name plutôt que vers la console. Alors que cela peut être fait facilement avec la redirection de sortie, il y a des cas dans lesquels cette option est nécessaire : quand le terminal réinterprète la sortie avant de l'écrire vers un ficher. Le jeu de caractères défini avec --output-charset est honoré.
--flush-on-close | Indique au programme d'envoyer toutes les données cachées en mémoire vers le support de stockage lors de la fermeture de fichiers ouverts en écriture. Ceci peut être utilisé pour éviter la perte de données lors de coupures de courant ou pour contourner certains problèmes du système d'exploitation ou de pilotes. L'inconvénient est que le multiplexage sera plus long du fait que mkvmerge devra attendre que toutes les données soient écrites sur le support de stockage avant de quitter. Voir les problèmes #2469 et #2480 sur le suivi des bogues de MKVToolNix pour des discussions approfondies sur les avantages et inconvénients.
--ui-language code | Force les traductions pour la langue code à utiliser (par ex. 'fr_FR' pour les traductions françaises). Saisir 'list' comme code obligera le logiciel à générer la liste des traductions disponibles.
--abort-on-warnings | Demande au programme d'abandonner après le premier avertissement. Le code de fermeture sera égal à 1.
--deterministic seed | Permet la création de fichiers identiques à l'octet près si la même version de mkvmerge(1) est utilisée avec les mêmes fichiers source, le même jeu d'options et la même amorce. Noter que le champ d'information de segment « date » n'est pas écrit dans ce mode. L'amorce peut être une chaîne quelconque, pas nécessairement un nombre. L'obtention de fichiers identiques à l'octet près ne peut être garantie que dans les conditions suivantes : La même version de mkvmerge(1) construite avec les mêmes versions de libEBML et de libMatroska est utilisée. Les fichiers source sont identiques à l'octet près. Les mêmes options en ligne de commande sont utilisées dans le même ordre (à l'exception notable de --output …). Utiliser d'autres versions de mkvmerge(1) ou d'autres options en ligne de commande peut résulter en un fichier identique à l'octet, mais ce n'est pas garanti.
--debug topic | Activer le débogage pour une fonctionnalité spécifique. Cette option est utile uniquement pour les développeurs.
--engage feature | Active les fonctionnalités expérimentales. Une liste des fonctionnalités disponibles peut être demandée avec mkvmerge --engage list. Ces fonctionnalités ne devraient pas être utilisées en situations normales.
--gui-mode | Active l'interface graphique utilisateur. Dans ce mode, des lignes spécialement formatées peuvent être générées et informer une GUI de la situation. Ces messages suivent le format '#GUI#message'. Le message peut être suivi d'une paire clé/valeur comme '#GUI#message#key1=value1#key2=value2…'. Ni les messages ni les clés ne sont traduits, et sont toujours générés en anglais.
@options-file.json | Lit les arguments additionnels de ligne de commande depuis le fichier options-file. Voir la section fichiers d'options pour d'autres informations.
--capabilities | Liste les informations à propos des fonctionnalités optionnelles qui ont été compilées et quitte. La première ligne de sortie sera l'information de version. Toutes les lignes suivantes contiennent exactement un mot dont la présence indique que la fonctionnalité a été compilée. Ces fonctionnalités sont : 'FLAC' -- lecture raw FLAC fichiers et gestion FLAC pistes dans d'autres conteneurs, e.g. Ogg(tm) or Matroska(tm).
-h, --help | Affiche les informations d'utilisation et quitte.
-V, --version | Affiche les informations de version et quitte.

# 3. Utilisation

Pour chaue fichier, l'utilisateur peut sélectionner quelle pistes mkvmerge(1) devrait prendre. Elles sont toutes mises dans le fichier spécifié avec -o. Une liste des formats source connus (et pris en charge) peut être obtenue avec l'option -l.

Important:

L'ordre des options en ligne de commande est important. Les nouveaux utilisateurs devraient lire la section "Ordre des options" .

# 4. Ordre des options

L'ordre dans lequel les options sont saisies est important pour quelques options. Les options appartiennent à deux catégories :

1. Les options qui affectent le programme globalement et ne sont pas liées à un fichier source. Ce sont en particulier, mais pas seulement, --command-line-charset, --output ou --title. Elles peuvent apparaître n'importe où sur la ligne de commande.

2. Les options qui affectent un fichier source unique ou une piste unique d'un fichier source. Ces options s'appliquent toutes au fichier source suivant sur la ligne de commande. Toutes les options s'appliquant au même fichier source (ou aux pistes du même fichier source) peuvent être écrites dans un ordre quelconque du moment qu'elles apparaissent avant ce nom de fichier source. Des exemples pour des options s'appliquant à un fichier source sont --no-chapters ou --chapter-charset. Des exemples pour options s'appliquant à une piste unique sont --default-duration ou --language.

Les options sont traitées de la gauche vers la droite. Si une option apparaît plusieurs fois dans le même contexte, alors la dernière sera utilisée. Le titre sera donc défini à "Autre chose" dans l'exemple suivant :

    $ mkvmerge -o output.mkv --title 'This and that' input.avi --title 'Something else'

L'exemple suivant montre qu'utiliser l'option --language 2 fois est correct parce qu'elles sont utilisées dans des contextes différents. Même si on les applique à la même ID de piste, elles s'appliquent à des fichiers source différents et donc des contextes différents :

    $ mkvmerge -o output.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg

# 5. Exemples

Supposons un fichier appelé MyMovie.avi et la piste audio dans un fichier séparé , par ex. 'MyMovie.wav'. On veut d'abord encoder l'audio en OggVorbis(tm) :

    $ oggenc -q4 -oMyMovie.ogg MyMovie.wav

Après quelques minutes, on peut joindre l'audio et la vidéo :

    $ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg

Si AVI contient déjà une piste audio alors elle sera aussi copiée (si mkvmerge(1) prend en charge le format audio). Pour l'éviter, faire simplement

    $ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg

Après réflexion, une autre piste audio est numérisée, par ex. les commentaires du réalisateur ou une autre langue vers 'MyMovie-add-audio.wav'. On peut l'encoder à nouveau et la joindre aux autres fichiers :

    $ oggenc -q4 -oMyMovie-add-audio.ogg MyMovie-add-audio.wav
    $ mkvmerge -o MM-complete.mkv MyMovie-with-sound.mkv MyMovie-add-audio.ogg

Un résultat similaire peut être obtenu avec

    $ mkvmerge -o MM-complete.mkv -A MyMovie.avi MyMovie.ogg MyMovie-add-audio.ogg

Exécuter maintenant mplayer(tm) et apprécier. En cas de pistes audio multiples (ou même vidéo) alors il est possible d'indiquer à mplayer(tm) quelle piste jouer avec les options '-vid' et '-aid'. Celles-ci sont basées sur 0 et ne différencient pas la vidéo et l'audio.

On peut obtenir un piste audio synchronisée facilement. D'abord déterminer quel ID de piste la piste Vorbis a avec

    $ mkvmerge --identify outofsync.ogg

Il est maintenant possible d'utiliser cet ID dans la ligne de commande suivante :

    $ mkvmerge -o goodsync.mkv -A source.avi -y 12345:200 outofsync.ogg

Cela ajouterait 200 ms de silence au début de la piste audio avec l'ID 12345 issue de 'outofsync.ogg'.

Quelques films débutent correctement synchronisés puis se désynchronisent lentement subissent. Pour ces films, on peut spécifier un délai appliqué à tous les horodatages -- aucune donnée ajoutée ou retirée. Si le délai est trop petit/grand, le résultat est mauvais. Un exemple est un épisode transcodé qui était décalé de 0.2 secondes à la séquence qui était longue de 77340 trames. À 29.97 tps 0.2 seconde correspond à approx. 6 trames. Opération appliquée

    $ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.mkv

Le résultat était correct.

Les options de synchronisation peuvent aussi être utilisées pour les sous-titres de la même manière.

Pour les sous-titres texte on peut soit utiliser un programme Windows (comme SubRipper(tm)) ou le paquet subrip(tm) de la source de transcode(1)dans le répertoire 'contrib/subrip'. L'opération générale est :

1. extrait un flux de sous-titres brut depuis la source :

       $ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie

2. convertit les images PGM résultantes en texte avec gocr :

       $ pgm2txt mymovie

3. vérifie l'orthographe des fichiers texte résultants :

       $ ispell -d american *txt

4. convertit les fichiers texte en fichier SRT :

       $ srttool -s -w -i mymovie.srtx -o mymovie.srt

Le fichier résultant peut être utilisé comme fichier source pour mkvmerge(1) :

    $ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt

Il est facile de spécifier la langue d'une piste donnée. D'abord trouver le code ISO 639-2 de la langue. mkvmerge(1) peut lister tous ces codes :

    $ mkvmerge --list-languages

Trouver dans la liste la langue souhaitée. Supposons qu'il y a 2 pistes audio dans un fichier Matroska(tm) dont il faut définir les codes langue et que leurs ID de pistes sont 2 et 3. Cela peut être réalisé avec

    $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut without-lang-codes.mkv

On peut voir qu'on peut utiliser le commutateur --language de multiples fois.

Peut-être que vous aimeriez aussi que le lecteur utilise la langue Néerlandaise comme langue par défaut. Vous avez également des sous-titres supplémentaires, en Anglais et en Français, et que le lecteur désire afficher les français par défaut. Cela peut être fait avec

    $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut --default-track 3 without-lang-codes.mkv --language 0:eng english.srt --default-track 0 --language 0:fre french.srt

Si les signaux de langue ou de « Piste par défaut » spécifiés dans la sortie de mkvinfo(1) ne sont pas visibles, merci de lire la section relative aux valeurs par défaut.

Désactiver la compression d'un fichier source.

    $ mkvmerge -o no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt

# 6. ID de pistes

## 6.1. ID de pistes normales

Quelques unes des options pour mkvmerge(1) nécessitent un ID de piste pour spécifier à quelle piste elles devraient s'appliquer. Ces ID de pistes sont imprimés par les lecteurs lors du démuxage du fichier source actuel., ou si mkvmerge(1) est appelé avec l'option --identify. Un exemple d'une telle sortie :

    $ mkvmerge -i v.mkv
    File 'v.mkv': container: Matroska
    Track ID 0: video (V_MS/VFW/FOURCC, DIV3)
    Track ID 1: audio (A_MPEG/L3)

Ne pas confondre les ID de pistes qui sont assignés aux pistes placées dans le fichier MKV cible avec les ID de pistes des fichiers sources. Seuls les ID de pistes des fichiers sources sont utilisés pour les options nécessitant ces valeurs.

Noter aussi que chaque fichier source possède son propre jeu d'ID de pistes. Par conséquent les ID de pistes pour le fichier 'file1.ext' tels que rapportés par 'mkvmerge --identify' ne changent pas quelque soit le nombre de fichiers sources ou dans quelle position 'file1.ext' est utilisé.

Les ID de pistes sont assignées comme ceci :

- Les fichiers AVI : la piste vidéo a l'ID 0. Les pistes audio ont leurs ID par ordre croissant et débutant à 1.

- Fichiers AAC, AC-3, MP3, SRT et WAV : la piste une de ce fichier prend l'ID 0.

- La plupart des autres fichiers : les ID de pistes sont assignées dans l'ordre des pistes dans le fichiers en débutant à 0.

Les options qui utilisent les ID de pistes sont celles dont la description contient 'TID'. Les options suivantes utilisent aussi des ID de pistes : --audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks and --track-tags.

## 6.2. ID de pistes spéciales

Il existe plusieurs ID qui ont une signification spéciale et qui n'apparaissent pas lors de l'identification.

L'ID de piste spéciale '-1' est un joker et applique le commutateur donné à toutes les pistes qui sont lues depuis un fichier source.

L'ID de piste spécial « -2 » fait référence aux chapitres d'un fichier source. Actuellement seule l'option --sync utilise cet ID spécial. Comme alternative à --sync -2:…, l'option --chapter-sync … peut être utilisée.

# 7. Fichiers texte et conversions de jeux de caractères

Note:

Cette section s'applique à tous les logiciels de MKVToolNix même si elle ne mentionne que mkvmerge(1).

## 7.1. Introduction

Tout le texte dans un fichier Matroska(tm) est encodé en UTF-8. Cela signifie que mkvmerge(1) doit convertir chaque fichier texte lu et chaque texte donné sur la ligne de commande d'un jeu de caractères en UTF-8. En corollaire, cela signifie aussi que la sortie de mkvmerge(1) doit être convertie d'UTF-8 vers ce jeu de caractères, par ex. si une traduction autre qu'Anglaise est utilisée avec --ui-language ou pour un texte provenant d'un fichier Matroska(tm).

mkvmerge(1) effectue cette conversion automatiquement d'après la présence d'un marqueur d'ordre d'octet (byte order marker, soit : BOM) ou la « locale » du système. Le jeu de caractères déduit de la « locale » dépend du système d'exploitation sur lequel est exécuté mkvmerge(1).

## 7.2. Marqueur d'ordre d'octet (byte order markers ou BOM)

Les fichiers texte qui débutent avec un BOM sont déjà encodés avec une des représentations UTF. mkvmerge(1) prend en charge les cinq modes suivant : UTF-8, UTF-16 Little et Big Endian, UTF-32 Little et Big Endian. Les fichiers texte avec un BOM sont automatiquement convertis en UTF-8. Tout paramètre qui autrement définirait le jeu de caractères pour un tel fichier (par ex. --sub-charset) est silencieusement ignoré.

## 7.3. Linux et les systèmes de type Unix incluant macOS

Sur les systèmes de type Unix mkvmerge(1) utilise l'appel système setlocale(3) qui à son tour utilise les variables d'environnement LANG, LC_ALL et LC_CYPE. Le jeu de caractères résultant est souvent un de la famille UTF-8 ou ISO-8859-* et est utilisé pour toutes les opérations de fichier texte, pour l'encodage des chaînes sur la ligne de commande et pour la sortie vers la console.

## 7.4. Windows

Sur Windows, le jeu de caractères par défaut utilisé pour convertir les fichiers texte est déterminé par un appel au système d'appel GetACP().

La lecture de la ligne de commande est effectuée avec la fonction GetCommandLineW() qui retourne déjà une chaîne Unicode. Par conséquent l'option --command-line-charset est ignorée sur Windows.

La sortie vers la console consiste en trois scénarios :

1. Si la sortie est redirigée avec l'option --redirect-output, alors le jeu de caractères par défaut est UTF-8. Ceci peut être modifié avec --output-charset.

2. Si la sortie est redirigée avec cmd.exe elle-même, par ex. avec mkvinfo file.mkv > info.txt, alors le jeu de caractères est toujours UTF-8 et ne peut pas être modifié.

3. Sinon (à l'écriture directe vers la console) la fonction Windows WriteConsoleW() est utilisée et l'option --output-charset est ignorée. La console devrait être capable de sortir tous les caractères Unicode pour lesquels la prise en charge de la langue correspondante est assurée (par ex. les caractères Chinois ne devraient pas être affichés sur les versions Anglaises de Windows).

## 7.5. Options de ligne de commande

Les options suivantes existent et permettent de spécifier les jeux de caractères :

- --sub-charset pour les fichiers de sous-titres texte et les pistes de sous-titres texte stockées dans des formats de conteneurs pour lesquels le jeu de caractères ne peut pas être déterminé sans ambiguïté (par ex. les fichiers Ogg),

- --chapter-charset pour les fichiers texte de chapitres et pour les chapitres et titres de fichiers stockés dans des formats de conteneur pour lesquels le jeu de caractères ne peut pas être déterminé sans ambiguïté (par ex. les fichiers Ogg pour les informations de chapitres, les pistes et titres de fichiers etc. ; les fichiers MP4 pour les informations de chapitres),

- --command-line-charset pour toutes les chaînes sur la ligne de commande,

- --output-charset pour toutes les chaînes écrites vers la console ou vers un fichier si la sortie a été redirigée avec l'option --redirect-output. Sue les système non Windows, le jeu de caractères par défaut pour la sortie est celui actuel du système. Sur Windows c'est par défaut UTF-8 pour la redirection avec --redirect-output et avec cmd.exe elle-même, par ex. mkvinfo file.mkv > info.txt.

# 8. Fichiers d'options

Un fichier d'options est un fichier où mkvmerge(1) peut lire des arguments en ligne de commande supplémentaires. Ce peut être utilisé pour contourner certaines limitations du shell ou du système d'exploitation à l'exécution de programmes externes comme une longueur de ligne de commande limitée.

Un fichier d'option contient des données formatées en JSON. Son contenu doit être un tableau valide JSON comprenant seulement des chaînes JSON. L'encodage du fichier doit être UTF-8. Le fichier ne devrait pas débuter avec un marquer d'ordre d'octet (BOM), mais si c'est le cas, il sera ignoré.

Les règles pour échapper les caractères spéciaux en JSON sont celles de la spécification JSON officielle, RFC 7159.

La ligne de commande 'mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg' pourrait être convertie en le fichier d'options JSON suivant nommé par ex. 'options.json' :

    [
      "-o",
      "c:\\Matroska\\my file.mkv",
      "--title",
      "#65",
      "-A",
      "a movie.avi",
      "sound.ogg"
    ]

# 9. Liage de fichiers

Matroska(tm) prend en charge le liage de ficher qui indique simplement qu'un fichier spécifique est le prédécesseur ou successeur du fichier courant. Précisément, ce ne sont pas les fichiers qui sont liés mais les segments Matroska(tm). Comme la plupart des fichiers ne contiendront probablement qu'un segment Matroska(tm), les explications suivantes utilisent l'expression « liage de ficher » bien que « liage de segment » serait plus appropriée.

Chaque segment est identifié par un UID de segment unique large de 128 bit. Cet UID est automatiquement généré par mkvmerge(1). Le liage est principalement réalisé en plaçant les UID de segment (abrévié en : SID) du fichier précédent/suivant dans les informations d'entête de segment. mkvinfo(1) affiche ces SID s'il les trouve.

Si un fichier est scindé en plusieurs plus petits et le liage est utilisé, alors les horodatages ne recommenceront pas à 0 mais vont continuer où ils se sont terminés dans le dernier fichier. Comme cela le temps absolu est conservé même si les fichiers précédents ne sont pas disponibles (par ex. en diffusion de flux). En l'absence de liage, les horodatages devraient commencer à 0 pour chaque fichier. Par défaut mkvmerge(1) n'utilise pas le liage de fichier. Pour l'utiliser, il faut l'activer avec l'option --link. Cette option est seulement utile si la scission est aussi activée.

Que la scission soit active ou pas, l'utilisateur peut indiquer à mkvmerge(1) de lier les fichiers produits à des SID spécifiques. Cela est obtenu avec les options --link-to-previous et --link-to-next. Ces options acceptent un segment SID dans le format que mkvinfo(1) génère : 16 nombres hexadécimaux entre 0x00 et 0xff chacun préfixé avec '0x', par ex. '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. Une forme raccourcie peut aussi être utilisée : 16 nombres hexadécimaux entre 0x00 et 0xff sans le préfixe '0x' et sans les espaces, par ex. '41da7366d9cfb21eae78ebb45ecab393'.

Si la scission est utilisée, alors le premier fichier est lié au SID donné avec --link-to-previous et le dernier fichier est lié au SID donné avec --link-to-next. Si la scission n'est pas utilisée, alors le fichier cible unique sera lié aux deux SIDs.

# 10. Valeurs par défaut

La spécification Matroska(tm) dicte que quelques éléments possèdent une valeur par défaut. Habituellement un élément n'est pas écrit vers le fichier si sa valeur est égale à la valeur par défaut afin de gagner de l'espace. Les éléments que l'utilisateur pourraient manquer dans la sortie de mkvinfo(1) sont les éléments langue et le signal de piste par défaut. La valeur par défaut de la language est English ('eng'), et la valeur par défaut du signal de piste par défaut est true. Par conséquent, si --language 0:eng est utilisé pour une piste, alors il ne sera pas affiché dans la sortie de mkvinfo(1).

# 11. Pièces jointes

Peut-être l''utilisateur veut-il conserver quelques photos avec le fichier Matroska(tm), ou utiliser des sous-titres SSA avec une police de caractères TrueType(tm) spéciale qui est vraiment rare. Dans ces cas-là, il faut joindre ces fichiers (= pièces) au fichier Matroska(tm). Ils ne vont pas seulement y être ajoutés, mais aussi embarqués. Un lecteur pourra alors afficher ces fichiers (cas des photos) ou les utiliser pour rendre les sous-titres (cas des polices TrueType(tm)).

Voici un exemple comment joindre une photo et une police TrueType(tm) au fichier cible :

    $ mkvmerge -o output.mkv -A video.avi sound.ogg \
      --attachment-description "Me and the band behind the stage in a small get-together" \
      --attachment-mime-type image/jpeg \
      --attach-file me_and_the_band.jpg \
      --attachment-description "The real rare and unbelievably good looking font" \
      --attachment-mime-type application/octet-stream \
      --attach-file really_cool_font.ttf

Si un Matroska(tm) contenant un fichier de pièces jointes est utilisé comme fichier source, alors mkvmerge(1) copiera les pièces jointes dans le nouveau fichier. La sélection des pièces jointes copiées ou non peut être modifiée avec les options --attachments et --no-attachments.

# 12. Chapitres

Le système de chapitres de Matroska(tm) est plsu évolué que le vieux système utilisé par les fichiers OGM. Les spécifications complètes peuvent être trouvées sur le site Web Matroska.

mkvmerge(1) prend en charge 2 sortes de fichiers de chapitres comme source. Le 1er format, appelé « simple format de chapitres », est le même format que les outils OGM utilisent. Le 2nd format est une format de chapitres en XML qui prend en charge toutes les fonctionnalités de chapitres de Matroska(tm).

En plus des fichiers de chapitres tels quels, mkvmerge(1) peut aussi lire les chapitres d'autres formats de fichiers (par ex. MP4, Ogg, Blu-ray ou DVD).

## 12.1. Le format de chapitres simple

Ce format consiste en paires de lignes qui débutent avec « CHAPTERxx= » et « CHAPTERxxNAME= » respectivement. La première contient l'horodatage de départ tandis que la seconde contient le titre. Voici un exemple :

    CHAPTER01=00:00:00.000
    CHAPTER01NAME=Intro
    CHAPTER02=00:02:30.000
    CHAPTER02NAME=Baby prepares to rock
    CHAPTER03=00:02:42.300
    CHAPTER03NAME=Baby rocks the house

mkvmerge(1) transformera chaque paire ou lignes en un ChapterAtom Matroska(tm). Il ne définit aucun ChapterTrackNumber, ce qui signifie que les chapitres s'appliquent tous à toutes les pistes du fichier.

Comme c'est un fichier texte, une conversion du jeu de caractères pourrait être nécessaire. Voir la section à propos des fichiers texte et jeux de caractères pour savoir comment mkvmerge(1) convertit les jeux de caractères.

## 12.2. Le format de chapitres basé sur XML

Le format de chapitres basé sur XML ressemble à cet exemple :

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd">
    <Chapters>
      <EditionEntry>
        <ChapterAtom>
          <ChapterTimeStart>00:00:30.000</ChapterTimeStart>
          <ChapterTimeEnd>00:01:20.000</ChapterTimeEnd>
          <ChapterDisplay>
            <ChapterString>A short chapter</ChapterString>
            <ChapterLanguage>eng</ChapterLanguage>
          </ChapterDisplay>
          <ChapterAtom>
            <ChapterTimeStart>00:00:46.000</ChapterTimeStart>
            <ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
            <ChapterDisplay>
              <ChapterString>A part of that short chapter</ChapterString>
              <ChapterLanguage>eng</ChapterLanguage>
            </ChapterDisplay>
          </ChapterAtom>
        </ChapterAtom>
      </EditionEntry>
    </Chapters>

Avec ce format, trois choses sont possibles qui sont impossibles avec le format de chapitres simple :

1. L'horodatage de fin de chapitre peut être défini,

2. les chapitres peuvent être imbriqués,

3. la langue et le pays peuvent être définis.

La distribution mkvtoolnix contient quelques fichiers d'échantillon dans le sous-dossier doc qui peuvent être utilisés comme point de départ.

La liste suivante montre les balises XML reconnues, leurs types de données et, quand approprié, la plage valide pour leurs valeurs.

    Chapters (master)
      EditionEntry (master)
        EditionUID (unsigned integer, valid range: 1 <= value)
        EditionFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagDefault (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagOrdered (unsigned integer, valid range: 0 <= value <= 1)
        ChapterAtom (master)
          ChapterAtom (master)
          ChapterUID (unsigned integer, valid range: 1 <= value)
          ChapterTimeStart (unsigned integer)
          ChapterTimeEnd (unsigned integer)
          ChapterFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
          ChapterFlagEnabled (unsigned integer, valid range: 0 <= value <= 1)
          ChapterSegmentUID (binary, valid range: 1 <= length in bytes)
          ChapterSegmentEditionUID (unsigned integer, valid range: 1 <= value)
          ChapterPhysicalEquiv (unsigned integer)
          ChapterTrack (master)
            ChapterTrackNumber (unsigned integer, valid range: 1 <= value)
          ChapterDisplay (master)
            ChapterString (UTF-8 string)
            ChapterLanguage (UTF-8 string)
            ChapterCountry (UTF-8 string)
          ChapterProcess (master)
            ChapterProcessCodecID (unsigned integer)
            ChapterProcessPrivate (binary)
            ChapterProcessCommand (master)
              ChapterProcessTime (unsigned integer)
              ChapterProcessData (binary)

## 12.3. Lecture des chapitres de Blu-ray

mkvmerge(1) peut lire les chapitres de Blu-ray non protégés. Pour cela, il faut utiliser le chemin d'une des listes de lecture MPLS avec le paramètre --chapters.

Exemple : --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls

## 12.4. Lecture des chapitres des DVD

Quand MKVToolNix est compilé avec la bibliothèque libdvdread(tm), mkvmerge(1) peut lire les chapitres de DVD. Pour cela il faut utiliser le chemin d'un des dossiers ou fichiers sur le DVD avec le paramètre--chapters. Comme un DVD peut posséder plus d'un titre et que chaque titre a son propre ensemble de chapitres, il est possible d'ajouter un double point suivi du numéro de titre désiré à la fin de l'argument de nom de fichier. Le numéro de titre par défaut est 1.

Exemple : --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2

## 12.5. Notes générales

En scindant des fichiers, mkvmerge(1) ajustera correctement aussi les chapitres. Cela signifie que chaque fichier inclue seulement les entrées de chapitres qui s'y appliquent, et que les horodatages seront décalés pour correspondre aux nouveaux horodatages de chaque fichier cible.

mkvmerge(1) est capable de copier des chapitres de fichiers sources Matroska(tm) à moins que cela soit explicitement désactivé avec l'option --no-chapters. Les chapitres de tous les fichiers sources (fichiers Matroska(tm), fichiers Ogg, fichiers MP4, fichiers texte de chapitres) ne sont habituellement pas fusionnés mais laissés séparés en ChapterEditions. C'est seulement si les chapitres sont lus depuis plusieurs fichiers Matroska(tm) ou XML qui partagent les mêmes UID d'édition que les chapitres seront fusionnés en un unique ChapterEdition. Si cette fusion est aussi souhaitée dans d'autres situations, alors l'utilisateur devra d'abord extraire les chapitres de toutes les sources avec mkvextract(1), fusionner les fichiers XML manuellement et enfin les multiplexer.

# 13. Balises

## 13.1. Introduction

Le système de balises Matroska(tm) est similaire à celui des autres conteneurs : un ensemble de paires KEY=VALUE. Cependant, dans Matroska(tm) ces balises peuvent aussi être imbriquées, et KEY et VALUE des éléments à eux seuls. Le fichier d'exemple example-tags-2.xml montre comment utiliser ce système.

## 13.2. Portée des balises

Les balises Matroska(tm) ne sont pas appliquées auto. au fichier complet. C'est possible, mais elles peuvent aussi être appliquées à différentes parties du fichier : à une ou plusieurs pistes, à un ou plusieurs chapitres, voire à une combinaison des deux. La spécification Matroska donne plus de détails sur cet état de fait.

Un fait important est que les balises sont liées aux pistes ou aux chapitres avec l'élément balise Matroska(tm) Targets, et que les UID utilisés pour ce liage ne sont pas les ID de pistes que mkvmerge(1) utilise partout. Les numéros utilisés sont plutôt les UID que mkvmerge(1) calcule automatiquement (si la piste est issue d'un format de fichier autre que Matroska(tm)) ou qui sont copiés du fichier source si la piste du fichier source est un fichier Matroska(tm). Par conséquent il est difficile de savoir quels UID utiliser dans le fichier de balises avant que le fichier soit pris en charge par mkvmerge(1).

mkvmerge(1) reconnaît deux options aveclesquelles on peut ajouter des balises aux fichiers Matroska(tm) : les --global-tags et the --tags. Le différence est que la première, --global-tags, fera les balises s'appliquer au fichier complet en retirant tous ces éléments Targets mentionnés plus haut. La dernière option, --tags, insérera automatiquement l'UID que mkvmerge(1) génère pour la balise spécifiée avec la partie TID de l'option --tags.

## 13.3. Exemple

Disons qu'on veut ajouter des balises à une piste vidéo lue depuis un fichier AVI. mkvmerge --identify file.avi indique que cet ID de piste vidéo (à ne pas confondre avec les UID !) est 0. À partir de là, on peut créer le fichier de balises en laissant tous les éléments Targetset appeler mkvmerge(1) :

    $ mkvmerge -o file.mkv --tags 0:tags.xml file.avi

## 13.4. Format de fichier de balises

mkvmerge(1) prend en charge un format de fichier balises en XML. Le format est très proche de la spécification Matroska. Les distributions de binaires et sources de MKVToolNix contiennent un échantillon de fichier appelé example-tags-2.xml qui liste simplement toutes les balises connues et qui peut être utilisé comme base pour des fichiers balises réels.

Les bases sont :

- L'élément le plus externes doit être <Tags>.

- Une balise logique est contenue à l'intérieur d'une paire de balises XML <Tag>.

- Les espaces blancs avant et après le contenu d'une balise sont ignorées.

## 13.5. Types de données

Le nouveau système de balises Matroska(tm) reconnaît seulement deux types de données, une chaîne UTF-8 et un type binaire. Le premier est utilisé pour le nom de balise et l'élément <String> tandis que le type binaire est utilisé pour l'élément <Binary>.

Comme les données binaires ne peuvent pas être stockées dans un fichier XML, mkvmerge(1) prend en charge deux autres méthodes pour les stocker. Si le contenu d'une balise XML débute avec '@', alors le texte suivant est traité comme un nom de fichier. Le contenu du fichier correspondant est copié dans l'élément Matroska(tm).

Sinon les données sont attendues encodées en Base64. C'est un encodage qui transforme les données binaires en un jeu limité de caractères ASCII et qui est utilisé par ex. dans les programmes de courriels. mkvextract(1) sortira des données encodées en Base64 pour les éléments binaires.

Le système de balises obsolète reconnaît d'autres types de données qui peuvent être retrouvés dans les spécifications de balises Matroska(tm). Comme mkvmerge(1) ne prend plus en charge ce système, ces types ne sont pas décrits ici.

## 13.6. Balises connues pour le format de fichier XML

La liste suivante montre les balises XML reconnues, leurs types de données et, quand approprié, la plage valide pour leurs valeurs.

    Tags (master)
      Tag (master)
        Targets (master)
          TargetTypeValue (unsigned integer)
          TargetType (UTF-8 string)
          TrackUID (unsigned integer)
          EditionUID (unsigned integer)
          ChapterUID (unsigned integer)
          AttachmentUID (unsigned integer)
        Simple (master)
          Simple (master)
          Name (UTF-8 string)
          TagLanguage (UTF-8 string)
          DefaultLanguage (unsigned integer)
          String (UTF-8 string)
          Binary (binary)

# 14. Les fichiers XML d'informations de segment

Avec un fichier XML d'informations de segment, il est possible de définir certaines valeurs dans le champ d'entête d'"informations de segment" d'un fichier Matroska(tm). Toutes ces valeurs ne peuvent pas être définies par d'autres options en ligne de commande.

D'autres champs d'entête d'"informations de segment" peuvent être définis via les options en ligne de commande mais pas via le fichier XML. Ceci inclue par ex. les options --title et --timestamp-scale.

Il existe d'autres éléments qui ne peuvent être définis ni par des options en ligne de commande ni par les fichiers XML. Ceux-ci incluent les éléments suivants : DateUTC (aussi connu en "muxing date"), MuxingApp, WritingApp et Duration. Ils sont toujours définis par mkvmerge(1) lui-même.

La liste suivante montre les balises XML reconnues, leurs types de données et, quand approprié, la plage valide pour leurs valeurs.

    Info (master)
      SegmentUID (binary, valid range: length in bytes == 16)
      SegmentFilename (UTF-8 string)
      PreviousSegmentUID (binary, valid range: length in bytes == 16)
      PreviousSegmentFilename (UTF-8 string)
      NextSegmentUID (binary, valid range: length in bytes == 16)
      NextSegmentFilename (UTF-8 string)
      SegmentFamily (binary, valid range: length in bytes == 16)
      ChapterTranslate (master)
        ChapterTranslateEditionUID (unsigned integer)
        ChapterTranslateCodec (unsigned integer)
        ChapterTranslateID (binary)

# 15. Disposition d'un fichier Matroska

La disposition d'un fichier Matroska(tm) est assez flexible. mkvmerge(1) rendra un fichier de manière prédéfinie. Le fichier résultant ressemble à ceci :

[EBML head] [segment {meta seek #1} [segment information] [track information] {attachments} {chapters} [cluster 1] {cluster 2} ... {cluster n} {cues} {meta seek #2} {tags}]

Les éléments entre accolades sont facultatifs et dépendent des contenus et des options utilisées. Quelques remarques :

- meta seek #1 inclut seulement un petit nombre d'éléments de niveau 1, et seulement s'ils existent réellement : pièces jointes, chapitres, points de montage, balises, meta seek #2. D'anciennes versions de mkvmerge(1) plaçaient aussi les grappes dans cet élément meta seek. Par conséquent, il était nécessaire de deviner de manière imprécise combien et assez d'espace à réserver. Cela échouait souvent. Maintenant, seules les grappes sont stockées dans meta seek #2, et meta seek #1 se réfère à l'élément meta seek #2.

- Les éléments de pièces jointes, de chapitres et de balises sont seulement présents s'ils ont été ajoutés.

Le fichier Matroska(tm) le plus petit possible devrait ressembler à ceci :

[EBML head] [segment [segment information] [track information] [cluster 1]]

Ceci devrait être le cas pour les fichiers audio seuls.

# 16. Fichiers externes d'horodatage

mkvmerge(1) permet lui-même à l'utilisateur de choisir l'horodatage d'une piste spécifique. Ceci peut être utilisé pour créer des fichiers avec une vidéo à débit de trames variable ou inclure des blancs dans l'audio. une trame dans ce cas est l'unité que mkvmerge(1) crée séparément par bloc Matroska(tm). Pour la vidéo c'est exactement une trame, pour l'audio c'est un paquet du type audio spécifique. Par ex. pour AC-3, cela serait un paquet contenant 1536 échantillons.

Les fichiers d'horodatage qui sont utilisés quand des pistes sont ajoutées l'une à l'autre doivent seulement être spécifiés pour la première partie dans une chaîne de pistes. Par ex., pour ajouter deux fichiers, v1.avi et v2.avi, et utiliser les horodatages, alors la ligne de commande ressemblera à ceci :

    $ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi

mkvmerge(1) reconnaît quatre formats. La première ligne contient toujours le numéro de version. Les lignes vides, les lignes ne contenant que des espaces blanches et les lignes commençant avec '#' sont ignorées.

## 16.1. Format de fichier d'horodatage v1

Ce format débute avec la ligne de version. La seconde ligne déclare le nombre par défaut de de trames par seconde. Toutes les lignes suivantes contiennent trois chiffres séparés par une virgule : la trame de début (0 est la première), la trame de fin et le nombre de trames dans cette plage. Le nombre de FPS est un nombre flottant avec un point '.' comme séparateur décimal. Les plages peuvent contenir des blancs pour lesquels le FPS par défaut est utilisé. Un exemple :

    # format d'horodatage v1
    suppose 27.930
    800,1000,25
    1500,1700,30

## 16.2. Format de fichier d'horodatage v2

Dans ce format chaque ligne contient un horodatage pour la trame correspondante. Cet horodatage doit être donné en précision à la milliseconde. Cela peut être un nombre flottant, sans obligation. Il faut fournir au moins autant d'horodatage qu'il y a de trames dans la piste. Les horodatages de ce fichier doivent être triés. Exemple pour 25fps :

    # format d'horodatage v2
    0
    40
    80

## 16.3. Format de fichier d'horodatage v3

Dans ce format chaque ligne contient une durée en secondes suivie par un nombre facultatif de trames par seconde. Les deux peuvent être des nombres flottants. Si le nombre de trames par seconde n'est pas présent, celui par défaut est utilisé. Pour l'audio il est préférable de laisser le codec calculer les horodatages de trames lui-même. Pour cela on devrait utiliser 0.0 comme nombre de trames par seconde. Il est aussi possible de créer des blancs dans le flux en utilisant les mot clé 'gap' suivi par la durée de ce blanc. Exemple pour un fichier audio :

    # format d'horodatage v3
    suppose 0.0
    25.325
    7.530,38.236
    blanc, 10.050
    2.000,38.236

## 16.4. Format de fichier d'horodatage v4

Ce format esr identique au format v2. La seule différence est que les horodatages n'ont pas à être triés. Ce format ne devrait presque jamais être utilisé.

# 17. Codes de fermeture

mkvmerge(1) quitte avec l'un de ces trois codes de fermeture :

- 0 -- Ce code de sortie signifie que le multiplexage s'est correctement terminé.

- 1 -- Dans ce cas mkvmerge(1) a émis au moins un avertissement, mais le multiplexage s'est poursuivi. une avertissement est préfixé avec le texte 'Avertissement :'. Selon les problèmes le fichier résultant pourrait être OK ou pas. Il est fortement recommandé à l'utilisateur de vérifier l'avertissement et le fichier résultant.

- 2 -- Ce code de fermeture est utilisé après la survenue d'une erreur. mkvmerge(1) abandonne juste après l'émission du message d'erreur. Les messages d'erreur vont des arguments erronés en ligne de commande aux erreurs de lecture/écriture en passant par les fichiers corrompus.

# 18. Variables d'environment

mkvmerge(1) utilise les variables par défaut qui déterminent la « locale » du système (par ex. LANG et la famille LC_*). Variables additionnelles :

Option | Description
--- | ---
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG et sa forme courte MTX_DEBUG | Le contenu est traité comme s'il a été passé via l'option --debug.
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE et sa forme courte MTX_ENGAGE | Le contenu est traité comme s'il a été passé via l'option --engage option.

# 19. Voir aussi

mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)

# 20. WWW

La dernière version peut toujours être trouvée à la page d'accueil de MKVToolNix.