MKVMERGE(1) Commandes utilisateur MKVMERGE(1) NOM mkvmerge - Fusionne les flux multimedia en un fichier Matroska(TM) RESUME mkvmerge [global options] {-o out} [options1] {file1} [[options2] {file2}] [@options-file.json] DESCRIPTION Ce logiciel prend les entrees de plusieurs fichiers de medias et joint leurs flux (tous ou une selection) dans un fichier Matroska(TM) ; voir le site Web Matroska(TM)[1]. Important L'ordre des options en ligne de commande est important. Les nouveaux utilisateurs devraient lire la section "Ordre des options" . Options globales -v, --verbose Augmente la verbosite. -q, --quiet Supprime les messages d'etat. -o, --output file-name Ecrit vers le fichier file-name. Si la scission est utilisee, alors ce parametre est traite un peu differemment. Voir l'explication pour l'option --split pour les details. -w, --webm Cree un fichier conforme WebM. C'est aussi active si l'extension du nom de fichier cible est "webm". Ce mode impose plusieurs restrictions. Les seuls codecs permis sont VP8, VP9 pour la video et les pistes audio Opus, Vorbis. L'element d'entete DocType est modifie en "webm". Pour les chapitres et les balises, seule une partie des elements est permise. mkvmerge(1) retirera automatiquement tous les elements non permis par la specification. --title titre Definit le titre general pour le fichier cible, par ex. le nom du film. --default-language language-code Definit le code langue par defaut qui sera utilise pour les pistes pour lesquelles aucune langue n'est definie avec l'option --language et pour lesquelles le conteneur source ne fournit pas de langue. Le code de langue par defaut pour << undetermined >> est << und >>. Gestion des infos de segments (options globales) --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 elements d'UID suivants et precedents 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 details. --segment-uid SID1,SID2,... Definit les UID de segment a utiliser. C'est une liste d'UID de segment de 128 bits separes par une virgule et sous leur forme habituelle : nombres hexadecimaux avec ou sans le prefixe "0x", avec ou sans espaces et d'exactement 32 chiffres. Si le SID commence avec =, alors son reste est interprete comme le nom d'un fichier Matroska dont l'UID de segment est lu et utilise. Chaque fichier cree contient un segment, et chaque segment a un UID de segment. Si plus d'UID de segment sont specifies que de segments sont crees, alors le surplus d'UID est ignore. Si moins d'UID sont specifies que de segments sont crees, alors des UID aleatoires seront crees pour eux. Gestion des balises et des chapitres (options globales) --chapter-language language-code Definit le code langue ISO 639-2 qui est ecrit pour chaque entree de chapitre. << eng >> par defaut. Voir la section a propos des chapitres ci-dessous pour les details. Cette option peut etre utilisee 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 definie avec cette option est aussi utilisee quand les chapitres sont generes avec --generate-chapters comme option. --chapter-charset character-set Definit le jeu de caracteres utilise pour la conversion vers UTF-8 des simples fichiers de chapitres. Voir la section a propos des fichiers texte et des jeux de caracteres pour savoir comment mkvmerge(1) convertit les jeux de caracteres. Ce commutateur s'appliquera aussi aux chapitres qui sont copies depuis certains types de conteneur, par ex. les fichiers Ogg/OGM et MP4. Voir la section sur les chapitres ci-dessous pour les details. --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 special -2 (voir la section ID de pistes speciaux). o/p : ajuste les horodatages de o/p pour corriger les derives lineaires. p est par defaut 1 si omis. o et p peuvent etre des nombre a virgules flottantes. Par defaut : aucune correction manuelle de la sync. (ce qui est la meme chose que d = 0 et o/p = 1.0). Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --generate-chapters mode mkvmerge(1) peut creer des chapitres automatiquement. Les deux modes suivants sont actuellement pris en charge : o 'when-appending' - Ce mode cree un chapitre au debut et un chapitre quand un fichier est ajoute. Ce mode fonctionne aussi avec les modes de scission << parts: >> et << parts-frames: >>. Pour ces modes, un chapitre sera genere pour chaque plage d'horodatage ajoutee (celles qui debutent les horodatages sont prefixees avec << + >>). Note mkvmerge(1) necessite une piste video ou audio presente pour etre en mesure de determiner quand un nouveau fichier est ajoute. Si une piste video ou plus sont mixees, la premiere est utilisee. Sinon la premiere piste audio est utilisee. o 'interval:time-spec' - Ce mode cree un chapitre a intervalle fixe par time-spec. Le format est soit la forme HH:MM:SS.nnnnnnnnn ou un nombre suivi par une des unites 's', 'ms' ou 'us'. Example : --generate-chapters interval:45s Les noms pour les nouveaux chapitres sont controles par l'option --generate-chapters-name-template. La langue est definie avec --chapter-language qui doit survenir avant --generate-chapters. --generate-chapters-name-template template Ceci definit le motif de nom pour les noms de chapitres generes par l'option --generate-chapters. Si l'option n'est pas utilisee, alors la chaine par defaut 'Chapter ' sera utilisee. Il existe plusieurs variables qui peuvent etre utilisees dans le motif et qui sont remplacees par leurs valeus reelles quand un chapitre est genere. La chaine '' sera remplacee par le numero de chapitre. La chaine '' sera remplacee par l'horodatage de debut de chapitre. Les chaines '' et '' sont seulement remplies a la generation de chapitres sont generes pour les fichiers ajoutes. Elles seront remplacees par le nom du fichier ajoute avec et sans son extension, respectivement. Noter que seuls le nom de base du fichier et l'extension sont inseres, pas son dossier ou les lettres ou composants du lecteur. Il est possible de specifier un nombre minimal de chiffres pour les numeros de chapitres avec '', par ex. ''. Le numero resultant sera prefixe de zeros si le nombre de chiffres est moindre que specifie. Il est possible de controler le format utilise par l'horodatage de debut avec . Le format est par defaut '%H:%M:%S' si aucun n'est donne. Les codes de format valides sont : o %h - heures o %H - heures a deux chiffres o %m - minutes o %M - minutes a deux chiffres o %s - secondes o %S - secondes a deux chiffres o %n - nanosecondes a neuf chiffres o %<1-9>n - nanosecondes avec jusqu'a 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 entrees PERFORMER et TITLE pour chaque entree d'index. mkvmerge(1) utilise ces deux chaines pour construire le nom de chapitre. Avec cette option, le format utilise pour ce nom peut etre defini. Si cette option n'est pas donnee, alors mkvmerge(1) utilise par defaut le format '%p - %t' (l'artiste, suivi par une espace, un tiret, une autre espace et le titre). Si le format est donnee, alors tout excepte les metacaracteres suivants est copie tel quel, et les metacaracteres sont remplaces comme ceci : o %p est remplace par la chaine du PERFORMER de l'entree actuelle, o %t st remplace par la chaine du TITLE de l'entree actuelle, o %n est remplace par le numero de la piste actuelle et o %N est remplace par le numero de la piste actuelle precede de 0 si < a 10. --chapters file-name Lit les informations de chapitres depuis le fichier file-name. Voir la section sur les chapitres ci-dessous pour les details. --global-tags file-name Lit les balises globales depuis le fichier file-name. Voir la section sur les balises ci-dessous pour les details. Controle general en sortie (options globales avancees) --track-order FID1:TID1,FID2:TID2,... Cette option modifie l'ordre dans lequel les pistes d'un fichier source sont creees. L'argument est une liste de paires d'ID separees par virgule. Chaque paire contient en premier l'ID fichier (FID1) qui est simplement le numero du fichier sur la ligne de commande et commencant a 0. Le second est l'ID de piste (TID1) de ce fichier. Si quelques ID de pistes sont omis, alors ces pistes sont creees apres que celles donnees par cette option ont ete creees. Si cette option n'est pas fournie, les pistes seront triees d'abord selon leur type puis ensuite selon l'ordre du fichier source. Les pistes video viennent en premier suivies par les pistes audio et de sous-titres. Les pistes rarement utilisees viennent en dernier. --cluster-length spec Limite le nombre de blocs de donnees ou la duree des donnees dans chaque grappe. Le parametre spec peut soit etre un nombre n sans unite soit un nombre d suivi de 'ms'. Si aucune unite n'est utilisee, alors mkvmerge(1) placera au plus n blocs de donnees 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 donnees dans chaque grappe. Le minimum pour d est '100 ms', et le maximum est '32000 ms'. Par defaut mkvmerge(1) place au plus 65535 blocs et 5000 ms de donnees par grappe. Les programmes essayant de trouver une certaine trame ne pourront effectuer qu'un positionnement sur une grappe (cluster), apres quoi ils devront lire la grappe entiere. Donc la creation de grappes plus grandes pourrait conduire a un positionnement lent ou imprecis. --clusters-in-meta-seek Indique a mkvmerge(1) de creer un element de meta-positionnement a la fin du fichier contenant toutes les grappes. Voir aussi la section sur la disposition des fichiers Matroska(TM). --timestamp-scale factor Force le facteur d'echelle de l'horodatage a factor. Les valeurs valides sont dans l'intervalle 1000..10000000 ou la valeur speciale -1. Normalement mkvmerge(1) utilisera une valeur de 1000000, ce qui signifie que les horodatages et les durees auront une precision de 1 ms. Pour les fichiers qui ne contiennent pas de piste video mais au moins une piste audio, mkvmerge(1) choisira automatiquement un facteur d'echelle de code temporel de facon a ce que les horodatages et les durees aient une precision de un echantillon audio. Cela permet un positionnement et une extraction precise au prix de calculs plus importants. Si la valeur speciale -1 est utilisee, alors mkvmerge(1) utilisera la precision des echantillons meme si une piste video est presente. --enable-durations Ecrit les durees 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 a mkvmerge(1) de ne pas creer et ecrire de donnees de montage qui peuvent etre comparee a un index dans un AVI. Les fichiers Matroska(TM) peuvent etre lus sans donnees de montage, mais le positionnement sera probablement imprecis et plus lent. A utiliser seulement en cas de contrainte forte d'espace ou pour test.. Voir aussi l'option --cues qui peut etre specifiee pour chaque fichier source. --no-date Par defaut mkvmerge(1) defini le champ d'information de segment << date >> a la date et heure courante quand le multiplexage debute. Avec cette option ce champ n'est pas du tout ecrit. --disable-lacing Desactive l'enlacement de toutes les pistes. Ceci va augmenter la taille du fichier, particulierement s'il y a beaucoup de pistes audio. Cette option n'est pas destinee a etre utilisee regulierement. --disable-track-statistics-tags Normalement mkvmerge(1) ecrira certaines balises avec des statistiques pour chaque piste. Si de telles balises sont deja presentes, alors elles seront ecrasees. Les balises sont BPS, DURATION, NUMBER_OF_BYTES et NUMBER_OF_FRAMES. Activer cette option empechera mkvmerge(1) d'ecrire ces balises et de modifier toutes les balises existantes avec les memes noms. --disable-language-ietf mkvmerge(1) ecrit normalement les nouveaux elements de langue IETF BCP 47 en plus des elements traditionnels dans les entetes de pistes, les chapitres et les balises. Si cette option est utilisee, seuls les elements traditionnels sont ecrits. --normalize-language-ietf mode Active la normalisation de toutes les etiquettes de langue IETF BCP 47 soit en leur forme canonique avec le mode 'canonique', soit en leur forme de sous-etiquettes de langue etendue avec le mode 'extlang' soit en le desactivant avec le mode 'off'. Par defaut la normalisation en forme canonique est appliquee. Dans la forme canonique, toutes les sous-etiquettes avec des valeurs preferees existantes sont remplacees par ces dernieres. Ceci convertit par ex. 'zh-yue-jyutping' en 'yue-jyutping' ou 'fr-FX' en 'fr-FR'. Pour la forme des sous-etiquettes de langue etendue, la forme canonique est d'abord construite. Ensuite toutes les langues primaires pour lesquelles des etiquettes de langue etendue existent sont remplacees par cette sous-etiquettes de langue etendue et son prefixe. Ceci reconvertit par ex. 'yue-jyutping' en 'zh-yue-jyutping' mais n'a pas d'effet sur 'fr-FR' car 'fr' n'est pas une sous-etiquette de langue etendue. --stop-after-video-ends Arrete l'execution a la fin de la premiere piste video en ignorant les paquets restants des autres pistes. Scission, liage, ajout et concatenation de fichiers (plus d'options globales) --split specification Scinde le fichier cible apres une taille ou une duree donnee. Merci de noter que les pistes peuvent etre seulement scindees apres une trame cle. Le point de scission peut donc etre un peu decale par rapport a ce que l'utilisateur a specifie. Pour le moment mkvmerge(1) prend en charge les modes suivants: 1. Scission par taille. Syntaxe : --split [size:]d[k|m|g] Exemples : --split size:700m ou --split 150000000 Le parametre 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 supposee. Apres que le fichier cible actuel a atteint cette limite de taille, un nouveau est demarre. Le prefixe 'size:' peut etre omis pour des raisons de compatibilite. 2. Scission apres une duree. Syntaxe : --split [duration:]HH:MM:SS.nnnnnnnnn|ds Exemples : --split duration:00:60:00.000 ou --split 3600s Le parametre doit soit avoir la forme HH:MM:SS.nnnnnnnnn pour specifie la duree en precision a la nanoseconde soit etre un chiffre d suivi de la lettre 's' pour une duree 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 etre omis tous les deux. Il peut y avoir jusqu'a neuf chiffres de decimales. Apres que la duree du contenu de la cible actuelle a atteint cette limite, un nouveau fichier cible est demarre. Le prefixe 'duration:' peut etre omis pour des raisons de compatibilite. 3. Scission apres des horodatages specifiques. Syntaxe : --split timestamps:A[,B[,C...]] Exemple : --split timestamps:00:45:00.000,01:20:00.250,6300s Les parametres A, B, C etc. doivent tous avoir le meme format que ceux utilises pour la duree (voir ci-dessus). La liste des horodatages est separee par des virgules. Apres que le flux source a atteint le code temporel du point de scission, un nouveau fichier est cree. Alors le point de scission suivant dans cette liste est utilise. Le prefixe 'timestamps:' ne doit pas etre omis. 4. Conservation de parties specifiques en specifiant des intervalles d'horodatage tout en en rejetant d'autres. Syntaxe : --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]] Exemples : 1. --split parts:00:01:20-00:02:45,00:05:50-00:10:30 2. --split parts:00:01:20-00:02:45,+00:05:50-00:10:30 3. --split parts:-00:02:45,00:05:50- Le mode parts indique a mkvmerge(1) de conserver certaines plages d'horodatages et d'en rejeter d'autres. Les plages a conserver doivent etre listees apres le mot cle parts: et etre separees par des virgules. Une plage elle-meme consiste en un horodatage de debut et de fin dans le meme format que les autres variations de --split acceptent (par ex. 00:01:20 et 80s refere au meme horodatage). Si un horodatage de debut est omis, alors il sera par defaut defini selon l'horodatage de fin de la plage precedente. En l'absence, il sera par defaut defini au debut du fichier (voir exemple 3) Si un horodatage de fin est omis, alors il sera par defaut defini a la fin des fichiers sources, ce qui indique simplement a mkvmerge(1) de conserver le reste (voir exemple 3) Normalement chaque plage sera ecrite dans un nouveau fichier. Ceci peut etre modifie de telle maniere que des plages consecutives puissent etre ecrites vers le meme fichier. Pour cela, l'utilisateur doit prefixer l'horodatage de debut avec un +. Ceci indique a mkvmerge(1) de ne pas creer de nouveau fichier et plutot d'ajouter la plage au meme fichier vers lequel la plage precedente a ete ecrite. Les horodatages seront ajustes pour qu'il n'y ait pas de blanc dans le fichier cible meme s'il y avait un blanc entre les deux plages dans le fichier source. Dans l'exemple 1 mkvmerge(1) va creer deux fichiers. Le premier contiendra le contenu debutant a 00:01:20 jusqu'a 00:02:45. Le second contiendra le contenu debutant a 00:05:50 jusqu'a 00:10:30. Dans l'exemple 2 mkvmerge(1) va creer un seul fichier. Celui-ci contiendra et le contenu debutant a 00:01:20 jusqu'a 00:02:45 et le contenu debutant a 00:05:50 jusqu'a 00:10:30. Dans l'exemple 3 mkvmerge(1) va creer deux fichiers. Le premier contiendra le contenu depuis le debut des fichiers sources jusqu'a 00:02:45. Le second contiendra le contenu debutant a 00:05:50 jusqu'a la fin des fichiers sources. Note Note : mkvmerge(1) prend seulement des decisions de scission aux positions des trames cles. Ceci s'applique au debut et a la fin de chaque plage. Donc meme si un horodatage de fin se situe entre deux trames cles, mkvmerge(1) continuera d'extraire les trames jusqu'a la trame cle suivante exclue. 5. Conservation de parties specifiques en specifiant des intervalles de trames/champs tout en en rejetant d'autres. Syntaxe : --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]] Exemples : 1. --split parts-frames:137-258,548-1211 2. --split parts-frames:733-912,+1592-2730 3. --split parts-frames:-430,2512- Le mode parts-frames indique a mkvmerge(1) de conserver certaines plages de numeros de trame/champ tout en en rejetant d'autres. Les plages a conserver doivent etre listees pres le mot cle parts-frames: et etre separees par des virgules. Une plage elle-meme consite en un numero de trame/champ de debut et de fin. La numerotation debute a 1. Si un numero de debut est omis, alors il est defini par defaut au numero de fin de la plage precedente. Si un numero de fin est omis, alors il sera par defaut defini a la fin des fichiers sources, ce qui indique simplement a mkvmerge(1) de conserver le reste (voir l'exemple 3) Normalement chaque plage sera ecrite dans un nouveau fichier. Ceci peut etre modifie de telle maniere que des plages consecutive soient ecrites dans le meme fichier. Pour cela, l'utilisateur doit prefixer le numero de debut avec un +. Ceci indique a mkvmerge(1) de ne pas creer un nouveau fichier mais d'ajouter la plage au meme fichier dans lequel la plage precedente a ete ecrite. Les horodatages seront ajustes de telle maniere qu'il n'y ait pas de blanc dans le fichier cible meme s'il y en avait un dans les deux plages du fichier source. Note Note : mkvmerge(1) prend seulement des decisions de scission aux positions de trames cles. Ceci s'applique au debut et a la fin de chaque plage. Donc meme si un numero de trame/champ se situe entre deux trames cles, mkvmerge(1) continuera de generer les trames jusqu'a la prochaine trame cle exclue. Dans l'exemple 1, mkvmerge(1) va creer deux fichiers. Le premier contiendra le contenu depuis la premiere trame cle a ou apres 137 jusqu'a la premiere trame cle a ou apres 258 exclue. Le second contiendra le contenu debutant a 548 jusqu'a 1211. Dans l'exemple 2, mkvmerge(1) va creer seulement un fichier. Ce fichier contiendra les contenus debutant a 733 jusqu'a 912 et debutant a 1592 jusqu'a 2730. Dans l'exemple 3, mkvmerge(1) va creer deux fichiers. Le premier contiendra le contenu depuis le debut des fichiers sources jusqu'a 430. Le second contiendra le contenu debutant a 2512 jusqu'a la fin des fichiers sources. Ce mode considere seulement la premiere piste video qui est generee. Si aucune piste video n'est generee, aucune scission n'est operee. Note Les nombres donnes avec cet argument sont interpretes selon le nombre de blocs Matroska(TM) en sortie. Un unique bloc Matroska(TM) contient soit une trame complete (contenu progressif) soit un unique champ (contenu entrelace). mkvmerge ne distingue pas entre les deux et compte simplement le nombre de blocs. Par exemple : si on veut scinder apres la 25eme trame complete avec du contenu entrelace, on devrait utiliser 50 (deux champs par trame complete) comme point de scission. 6. Scission apres des trames/champs specifiques. Syntaxe : --split frames:A[,B[,C...]] Exemple : --split frames:120,237,891 Les parametres A, B, C etc. doivent tous etre des entiers positifs. La numerotation debute a 1. La liste des numeros de trame/champ est separee par des virgules. Apres que le flux source a atteint le numero actuel de trame/champ du point de scission, un nouveau fichier est cree. Ensuite le point de scission suivant donne par cette liste est utilise. Le prefixe 'frames:' ne doit pas etre omis. Ce mode considere seulement la premiere piste video qui est generee. Si aucune piste video n'est generee, aucune scission n'est operee. Note Les nombres donnes avec cet argument sont interpretes selon le nombre de blocs Matroska(TM) en sortie. Un unique bloc Matroska(TM) contient soit une trame complete (contenu progressif) soit un unique champ (contenu entrelace). mkvmerge ne distingue pas entre les deux et compte simplement le nombre de blocs. Par exemple : si on veut scinder apres la 25eme trame complete avec du contenu entrelace, on devrait utiliser 50 (deux champs par trame complete) comme point de scission. 7. Scission avant des chapitres specifiques. Syntaxe : --split chapters:all ou --split chapters:A[,B[,C...]] Exemple : --split chapters:5,8 Les parametres A, B, C etc. doivent tous etre des entiers positifs. La numerotation debute a 1. La liste des numeros de chapitres est separee par des virgules. La scission sera operee juste avant la premiere trame cle dont l'horodatage est egal ou superieur a l'horodatage de debut pour les chapitres dont les numeros sont listes. Un chapitre debutant a 0 s n'est jamais pris en compte pour la scission et est ignore. Le mot cle all peut etre utilise plutot que de lister tous les numeros de chapitres manuellement. Le prefixe 'chapters:' ne doit pas etre omis. Note Le format Matroska(TM) prend en charge une profondeur arbitraire de structures de chapitres appelees << entrees d'edition >> et << atomes de chapitre >>. Toutefois, ce mode considere uniquement le niveau le plus eleve des chapitres parmi toutes les entrees d'edition. Pour ce mode de scission, le nom de fichier cible est traite differemment qu'en operation 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 numero de fichier actuel sera formate de maniere appropriee et insere a ce point dans le nom de fichier. S'il n'y a pas un tel motif, alors un motif de '-%03d' est suppose juste avant l'extension de du fichier : '-o output.mkv' resulterait en 'output-001.mkv' et ainsi de suite. S'il n'y a pas d'extension, alors '-%03d' sera ajoute au nom. Un autre motif possible est '%c' ; il sera remplace par le nom du premier chapitre du fichier. Noter que quand '%c' est present, le motif '-%03d' ne sera pas ajoute automatiquement. --link Lie les fichiers avec un autre lors de la scission du fichier cible. Voir la section file linking ci-dessous pour les details. --link-to-previous segment-UID Lie le premier fichier cible au segment avec l'UID de segment UID donne par le parametresegment-UID. Voir la section file linking ci-dessous pour les details. Si le SID commence avec =, alors son reste est interprete comme le nom d'un fichier Matroska dont l'UID de segment est lu et utilise. --link-to-next segment-UID Lie le dernier fichier cible au segment avec l'UID de segment UID donne par le parametresegment-UID. Voir la section file linking ci-dessous pour les details. Si le SID commence avec =, alors son reste est interprete comme le nom d'un fichier Matroska dont l'UID de segment est lu et utilise. --append-mode mode Determine comment les horodatages sont calcules quand des fichiers sont ajoutes. Le parametre mode peut avoir deux valeurs : 'file' qui est aussi la valeur par defaut et 'track'. Quand mkvmerge(1) ajoute une piste (appelee 'track2_1' a partir de maintenant) depuis un second fichier (appele 'file2') a une piste (appelee 'track1_1') depuis le premier fichier (appele 'file1'), alors il doit decaler tous les horodatages pour 'track2_1' d'un certain montant. Pour le mode 'file' ce montant est le plus haut horodatage rencontre dans 'file1' meme si cet horodatage provenait d'une piste differente que 'track1_1'. En mode piste le decalage est le plus haut horodatage de 'track1_1'. Malheureusement mkvmerge(1) ne peut pas detecter quel mode utiliser de maniere fiable. Par consequent, le mode par defaut est 'file'. Le mode 'file' fonctionne habituellement mieux pour les fichiers ayant ete crees independamment ; 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 traitees comme si le mode 'file' etait actif meme si c'est le mode 'track' qui est actif. --append-to SFID1:STID1:DFID1:DTID1[,...] Cette option controle a quelle piste une autre piste est ajoutee. Chaque spec. contient quatre ID : un ID de fichier, un ID de piste, un second ID de fichier, et un second ID de piste. La premiere paire, << ID de fichier source >> et << ID de piste source >>, identifie la piste qui sera ajoutee. La seconde paire, << ID de fichier destination >> et << ID de piste destination >>, identifie la piste a laquelle la premiere est ajoutee. Si cette option a ete omise, alors un mappage standard est utilise. Ce mappage standard ajoute chaque piste du fichier actuel a une piste du fichier precedent avec le meme ID de piste. Cela rend l'ajout plus facile, si un film a ete scinde en deux parties et que les deux fichiers ont le meme 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 a etre joint plutot qu'ajoute. Le << + >> peut aussi etre place devant le nom du fichier suivant. Les deux commandes suivantes sont donc equivalentes : $ 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 equivalentes : $ 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 meme dossier que le fichier source, qui ont le meme nom de base et different seulement par leur numerotation (par ex. 'VTS_01_1.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB' etc.). Le programme traite tous ces fichiers comme s'ils etaient concatenes en un seul gros fichier. Cette option, un unique << = >>, indique a mkvmerge de ne pas rechercher ces fichiers additionnels. Le << = >> peut egalement etre place devant le nom de fichier suivant. Par consequent, les deux commandes suivantes sont equivalentes : $ mkvmerge -o full.mkv = file1.vob $ mkvmerge -o full.mkv =file1.vob ( file1 file2 ) Si de multiples noms de fichiers sont places entre parentheses, alors ces fichiers seront traites comme s'ils etaient concatenes en un gros fichier unique contenant chaque fichier l'un apres l'autre. Ceci peut etre utilise pour par ex. les fichiers VOB provenant d'un DVD ou de flux de transport MPEG. Il ne peut pas etre utilise si chaque fichier contient son propre jeu d'entetes, ce qui est habituellement le cas avec les fichiers autonomes AVI ou MP4. Placer un nom de fichier entre parentheses empeche aussi mkvmerge(1) de rechercher d'autres fichiers avec le meme nom de base tel que decrit dans l'option =. Par consequent, ces deux lignes de commande sont equivalentes : $ mkvmerge -o out.mkv = file.mkv $ mkvmerge -o out.mkv '(' file.mkv ')' Plusieurs choses devraient etre notees : 1. Il doit y avoir des espaces apres la parenthese ouvrante et avant celle fermante. 2. Chaque parametre entre parentheses est interprete comme un nom de fichier. Par consequent, toutes les options s'appliquant a ce fichier logique doivent etre listees avant la parenthese ouvrante. 3. Quelques interfaces en lignes de commandes traitent les parentheses en caracteres speciaux. Il faut donc les echapper ou les entourer de guillemets comme dans l'exemple ci-dessus. Prise en charge des pieces jointes (plus d'options globales) --attachment-description description La description texte de la piece jointe suivante. S'applique a la prochaine --attach-file ou a l'option --attach-file-once. --attachment-mime-type MIME type Type MIME de la piece jointe suivante. S'applique a l'option suivante --attach-file ou --attach-file-once. Une liste des types MIME officiellement reconnus peut etre trouvee sur la page d'accueil IANA[2]. Le type MIME est obligatoire pour une piece jointe. Si aucun type MIME n'est donne pour une piece jointe, son type sera detecte automatiquement. --attachment-name name Definit le nom qui sera stocke dans le fichier cible pour cette piece jointe. Si cette option n'est pas fournie, alors le nom sera derive du nom de fichier de la piece jointe tel que donne par l'option --attach-file ou --attach-file-once. --attach-file file-name, --attach-file-once file-name Cree un fichier joint dans le fichier Matroska(TM). Le type MIME doit avoir ete defini avant que cette option puisse etre utilisee. La difference entre les deux formes est que pendant la scission les fichiers joints avec --attach-file le sont a tous les fichiers cibles alors que ceux joints avec --attach-file-once le sont seulement au premier fichier cree. Si la scission n'est pas utilisee, alors les deux font la meme chose. mkvextract(1) peut etre utilise pour extraire les fichiers joints d'un fichier Matroska(TM). --enable-legacy-font-mime-types Active l'utilisation des anciens types MIME pour certains types de pieces jointes de polices de caracteres. Par ex., << application/x-truetype-font >> sera utilise pour les polices TrueType au lieu de << fonts/ttf >>. Ceci affecte les nouvelles pieces jointes si leur type MIME est detecte automatiquement et celles existantes pour lesquelles les types MIME stockes seront remplaces par les anciens. Les types MIME affectes sont << font/sfnt >>, << font/ttf >> et << font/collection >>. Ils sont tous remplaces par << application/x-truetype-fonts >>. << font/otf >> est remplace par << application/vnd.ms-opentype >>. Options pouvant etre utilisee a chaque fichier source -a, --audio-tracks [!]n,m,... Copie les pistes audio n, m etc. Les numeros sont les ID de pistes qui peuvent etre obtenus avec le commutateur --identify. Ce ne sont pas seulement des numeros de pistes (voir la section ID de pistes). Par defaut : 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 defaut : copie toutes les pistes de ce type. Si les ID sont prefixes avec !, alors la signification est inversee : copier toutes les pistes semblables sauf celles listees apres le !. -d, --video-tracks [!]n,m,... Copie les pistes video n, m etc. Les numeros sont les ID de pistes qui peuvent etre obtenus avec le commutateur --identify. Ce ne sont pas seulement des numeros de pistes (voir la section ID de pistes). Par defaut : copie toutes les pistes video. 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 prefixes avec !, alors la signification est inversee : copier toutes les pistes semblables sauf celles listees apres le !. -s, --subtitle-tracks [!]n,m,... Copie les pistes de sous-titres n, m etc. Les numeros sont les ID de pistes qui peuvent etre obtenus avec le commutateur --identify. Ce ne sont pas seulement des numeros de pistes (voir la section ID de pistes). Par defaut : 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 prefixes avec !, alors la signification est inversee : copier toutes les pistes semblables sauf celles listees apres le !. -b, --button-tracks [!]n,m,... Copie les pistes de boutons n, m etc. Les nombres sont des ID de pistes qui peuvent etre obtenus avec le commutateur --identify. Ce ne sont pas simplement des numeros de pistes (voir la section ID de pistes). Par defaut : 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 prefixes avec !, alors la signification est inversee : copier toutes les pistes semblables sauf celles listees apres le !. --track-tags [!]n,m,... Copie les balises pour les pistes n, m etc. Les numeros sont les ID de pistes qui peuvent etre obtenus avec le commutateur --identify. Ce ne sont pas seulement des numeros de pistes (voir la section ID de pistes). Par defaut : copie toutes les balises pour les pistes. Si les ID sont prefixes avec !, alors la signification est inversee : copier toutes les pistes semblables sauf celles listees apres le !. -m, --attachments [!]n[:all|first],m[:all|first],... Copie les pistes de pieces jointes avec les ID n, m etc. vers tous les fichiers cibles ou seulement le premier. Chaque ID peut etre suivie soit par ':all' (par defaut si rien n'est saisi) soit par ':first'. Si la scission est active, alors les pieces jointes dont les ID sont specifiees avec ':all' sont copiees vers tous les fichiers cibles resultant alors que les autres sont copiees seulement vers le premier fichier cible. Si la scission n'est pas active, alors les deux variants ont le meme effet. Par defaut les pieces jointes sont copiees vers tous les fichiers cibles. Si les ID sont prefixes avec !, alors la signification est inversee : copier toutes les pistes semblables sauf celles listees apres le !. -A, --no-audio Ne copie aucune piste audio de ce fichier. -D, --no-video Ne copie aucune piste video 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 specifique de piste de ce fichier. --no-chapters Ne copie aucun chapitre de ce fichier. -M, --no-attachments Ne copie aucune piece 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 memes que ceux donnes avec --identify (voir la section ID de pistes). o/p : ajuste les horodatages de o/p pour corriger les derives lineaires. p est par defaut 1 si omis. o et p peuvent etre des nombre a virgules flottantes. Par defaut : aucune correction manuelle de la sync. (ce qui est la meme chose que d = 0 et o/p = 1.0). Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --cues TID:none|iframes|all Controle pour quelles pistes les entrees de montage (index) sont creees pour la piste fournie (voir la section ID de pistes). 'none' inhibe la creation des entrees de montage. Pour les 'iframes', seuls les blocs sans references avance et retour ( = trames I dans les pistes video) sont placees dans la feuille de montage. 'all' oblige mkvmerge(1) a creer des entrees de montage pour tous les blocs, ce qui rendra le fichier tres lourd. L'option par defaut est 'iframes' pour les pistes video et de sous-titres, et 'none' pour les pistes audio. Voir aussi l'option --no-cues qui inhibe la creation d'entrees de montage CUES quelque soit l'option --cues utilisee. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --default-track-flag TID[:bool] Pose l'indicateur << Piste par defaut >> pour la piste donnee (voir section ID de pistes) si l'argument facultatif bool est defini a 1 ou s'il n'est pas present. Ce signal sera defini si le conteneur de la source ne fournit pas cette information et si l'utilisateur ne le specifie pas via cette option. Si l'utilisateur ne selectionne pas explicitement une piste lors de la lecture, le lecteur devrait selectionner une des pistes avec l'indicateur << Piste par defaut >> pose, prenant en compte les preferences utilisateurs telle que la langue preferee. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --track-enabled-flag TID[:bool] Definit l'indicateur "piste activee" pour la piste donnee (voir la section ID de piste) a la valeur donnee par bool (0 ou 1 ; par defaut 1 si non specifiee). Les pistes sont activees par defaut si aucune option ne leur est specifiee et que le conteneur source ne fournit pas non plus l'information. Seules les pistes dont l'indicateur "piste activee" est pose devraient etre considerees pour la lecture. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --forced-display-flag TID[:bool] Pose l'indicateur << Affichage force >> pour la piste donnee (voir la section ID de pistes) si l'argument facultatif bool n'est pas present. Utiliser ceci pour les pistes contenant du texte a l'ecran ou des dialogues en langues etrangeres. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --hearing-impaired-flag TID[:bool] Pose l'indicateur << Malentendant >> pour la piste donnee (voir la section ID de pistes) si l'argument facultatif bool est defini a 1 ou s'il n'est pas present. Ce signal peut etre pose si la piste est adaptee aux utilisateurs malentendants. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --visual-impaired-flag TID[:bool] Pose l'indicateur << Malvoyant >> pour la piste donnee (voir la section ID de pistes) si l'argument facultatif bool est defini a 1 ou s'il n'est pas present. Ce signal peut etre pose si la piste est adaptee aux utilisateurs malvoyants. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --text-descriptions-flag TID[:bool] Pose l'indicateur << Audiodescription >> pour la piste donnee (voir la section ID de pistes) si l'argument facultatif bool est defini a 1 ou s'il n'est pas present. Ce signal peut etre pose si la piste contient l'audiodescription de contenu video adaptee a la lecture vocale pour l'utilisateur malvoyant Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --original-flag TID[:bool] Pose l'indicateur << Langue d'origine >> pour la piste donnee (voir la section ID de pistes) si l'argument facultatif bool n'est pas present. Ce signal peut etre pose si la piste est dans la langue d'origine du contenu (pas une traduction). Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --commentary-flag TID[:bool] Pose l'indicateur << Commentaire >> pour la piste donnee (voir la section ID de pistes) si l'argument facultatif bool est defini a 1 ou s'il n'est pas present. Ce signal peut etre pose si la piste contient des commentaires. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. --track-name TID:name Definit le nom de piste pour la piste fournie (voir la section ID de pistes) a name. --langue TID:langue Definit la langue pour la piste donnee (voir la section ID de pistes). Les codes langue ISO 639-2 et de pays ISO 639-1 sont autorises. Les codes de pays seront convertis automatiquement en codes langue. Toutes les langues, ainsi que leurs codes ISO 639-2, peuvent etre listees avec l'option --list-languages. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. -t, --tags TID:file-name Lit les balises pour la piste avec le numero TID depuis le fichier file-name. Voir la section balises ci-dessous pour les details. --aac-is-sbr TID[:0|1] Indique a mkvmerge(1) que la piste avec l'ID TID est SBR AAC (aussi connu sous HE-AAC ou AAC+). Cette option est necessaire si a) le fichier source file est un fichier AAC (pas pour un fichier Matroska(TM)) et b) le fichier AAC contient des donnees SBR AAC. La raison pour ce commutateur est qu'il est techniquement impossible de distinguer automatiquement des donnees normales AAC de donnees SBR AAC sans decoder une trame AAC complete. Comme il y a plusieurs problemes de brevets avec les decodeurs AAC, mkvmerge(1) n'assurera jamais cette phase de decodage. Donc pour les fichiersSBR AAC ce commutateur est obligatoire. Le fichier resultant de l'omission de ce commutateur pourrait ne pas etre lu correctement ou du tout. Si le fichier source est un fichier Matroska(TM), alors le CodecID devrait etre suffisant pour detecter SBR AAC. Toutefois si CodecID est faux, alors ce commutateur pourra etre utilise pour corriger cela.. Si mkvmerge(1) detecte incorrectement qu'un fichier AAC est SBR, alors il est possible d'ajouter ':0' a l'ID de piste. --audio-emphasis TID:n|symbolic-name Definit l'accentuation pour la piste audio avec l'ID de piste TID. Le mode peut soit etre un nombre n (certaines valeurs entre 0 et 16) soit un nom symbolique. Tous les nombres et noms valides peuvent etre listes avec l'option --list-audio-emphasis. --reduce-to-core TID Quelques codecs audio ont un coeur avec perte et des extensions facultatives qui implementent un decodage sans perte. Cette option indique a mkvmerge(1) de copier seulement le coeur mais pas les extensions. Par defaut mkvmerge(1) copie le coeur et les extensions. Actuellement, seules les pistes DTS sont affectees par cette option. Les pistes TrueHD qui contiennent un coeur AC-3 embarque sont plutot presentees en deux pistes separees que l'utilisateur peut selectionner pour copier. Pour DTS un tel schema ne fonctionnerait pas parce que les extensions HD ne peuvent pas etre decodees par elles-memes - a la difference des donnees TrueHD. --remove-dialog-normalization-gain TID Quelques codecs audio ont des champs d'entetes qui indiquent au decodeur ou lecteur d'appliquer un gain (habituellement negatif) pour la normalisation des dialogues. Cette option indique a mkvmerge(1) de retirer ou minimiser ce gain en modifiant les champs d'entetes correspondants. Seules les pistes AC-3, DTS et TrueHD sont actuellement concernees par cette option. --timestamps TID:file-name Lit les horodatages a utiliser pour l'ID de piste specifique depuis file-name. Ces horodatages ecrasent de force les horodatages que mkvmerge(1) calcule normalement. Lire la section fichiers externes d'horodatage. --default-duration TID:x Force la duree par defaut d'une piste donnee a la valeur specifiee. Modifie aussi les horodatage de la piste pour correspondre a la duree par defaut. L'argument x doit etre postfixe avec 's', 'ms', 'us', 'ns', 'fps', 'p' ou 'i' pour specifier la valeur de la duree par defaut en secondes, millisecondes, microsecondes, nanosecondes, 'trames par seconde', 'trames progressives par seconde' ou 'trames entrelacees par seconde' respectivement. Le nombre x peut lui-meme etre un nombre a virgule ou une fraction. Si la duree par defaut n'est pas forcee, alors mkvmerge essayera de deriver la duree par defaut de la piste depuis le conteneur et/ou le flux binaire encode pour certains types de pistes, par ex. AVC/H.264 ou MPEG-2. Cette option peut aussi etre utilisee pour modifier les FPS des pistes video sans avoir a 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) stockee dans le flux binaire de donnees video. Avec cette option, cette information est ajustee pour correspondre celle du conteneur. L'information de timing du conteneur peut provenir de sources variees : de la ligne de commande (voir l'option --default-duration), du conteneur source ou derivee du flux binaire. Note Ceci a ete implemente pour les pistes video AVC/H.264 pour le moment. --compression TID:n Selectionne la methode de compression a utiliser pour la piste. Note : le lecteur doit aussi prendre en charge cette methode. Les valeurs valides sont 'none', 'zlib' et 'mpeg4_p2'/'mpeg4p2'. La methode de compression << mpeg4_p2 >>/<< mpeg4p2 >> est une methode speciale de compression appelee << header removal >> qui n'est disponible que pour les pistes video MPEG4 part 2. La compression par defaut pour certains types de sous-titres est 'zlib'. Cette methode de compression est aussi celle que presque toutes les applications de lecture prennent en charge. La prise en charge d'autres methodes de compression que 'none' n'est pas assuree. Options ne s'appliquant qu'aux pistes video -f, --fourcc TID:FourCC Force le code FourCC a la valeur specifiee. Ne fonctionne que pour les pistes video en << mode compatibilite MS >>. --display-dimensions TID:widthxheight Les fichiers Matroska(TM) contiennent deux valeurs qui definissent les proprietes d'affichage qu'un lecteur devrait en compte pour la mise a l'echelle de l'image : largeur et hauteur d'affichage. Ces valeurs peuvent etre definies avec cette option, par ex. '1:640x480'. Une autre maniere de definir 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 definissent les proprietes d'affichage qu'un lecteur devrait prendre en compte pour la mise a l'echelle 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 donne par cette option. Le ratio d'aspect peut etre donne soit par un ratio en nombre flottant soit par comme une fraction de 'width/height', par ex. '16/9'. Une autre maniere de definir 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 maniere de definir le ratio d'aspect est de specifier un factor. Le ratio d'aspect d'origine est d'abord multiplie par ce factor puis est utilise comme ratio d'aspect cible par la suite. Une autre maniere de definir 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 Definit les parametres de deformation des pixels d'une piste video sur les valeurs donnees. --color-matrix-coefficients TID:n Definit les coefficients de matrice de la video utilises pour deriver les valeurs de luma et de chroma depuis les couleurs primaires rouge, vert et bleu. Le parametre n est un entier allant de 0 a 10. Les valeurs valides et leur signification sont : 0: GBR, 1: BT709, 2: non specifie, 3: reserve, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 luminance non constante, 10: BT2020 luminance constante --color-bits-per-channel TID:n Definit le nombre de bits codes pour un canal de couleur. Une valeur de 0 indique que le nombre de bits n'est pas specifie. --chroma-subsample TID:hori,vert La quantite de pixels a retirer dans les canaux Cr et Cb pour chaque pixel non retire horizontalement/verticalement. Exemple : pour une video avec un sous-echantillonnage chroma 4:2:0, le parametre devrait etre defini a TID:1,1. --cb-subsample TID:hori,vert La quantite de pixels a retirer dans les canaux Cr et Cb pour chaque pixel non retire horizontalement/verticalement. Ceci s'additionne a --chroma-subsample. Exemple : pour une video avec un sous-echantillonnage chroma 4:2:1, le parametre --chroma-subsample devrait etre defini a TID:1,0 et Cb-subsample devrait etre defini a TID:1,0. --chroma-siting TID:hori,vert Definit comment la chroma est localisee horizontalement/verticalement. (0: non specifie, 1: co-localise en haut, 2: moitie). --color-range TID:n Definit l'ecretage de l'intervalle de couleurs (0: non specifie, 1: intervalle broadcast, 2: intervalle entier (pas d'ecretage), 3: defini par MatrixCoefficients/TransferCharacteristics). --color-transfer-characteristics TID:n Les caracteristiques de transfert de la video. Les valeurs valides et leur signification sont : 0: reserve, 1: ITU-R BT.709, 2: non specifie, 3: reserve, 4: courbe gamma 2.2, 5: courbe gamma 2.8, 6: SMPTE 170M, 7: SMPTE 240M, 8: lineaire, 9: log, 10: racine de log, 11: IEC 61966-2-4, 12: gamut de couleur etendu 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) --color-primaries TID:n Definit les couleurs primaires de la video. Les valeurs valides et leur signification sont : 0: reserve, 1: ITU-R BT.709, 2: non specifie, 3: reserve, 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 Definit la brillance maximale d'un pixel unique (Niveau de Contenu de Lumiere Maximal - Maximum Content Light Level) en candelas par metre carre (cd/m^2). La valeur de n devrait etre un entier non negatif. --max-frame-light TID:n Definit la brillance maximale d'une trame complete unique (Niveau de Contenu de Lumiere Maximal - Maximum Content Light Level) en candelas par metre carre (cd/m^2). La valeur def ndevrait etre un entier non negatif. --chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y Definit les coordonnees de chromaticite du rouge/vert/bleu definies selon CIE 1931. --white-color-coordinates TID:x,y Definit les coordonnees de chromaticite du blanc definies selon CIE 1931. --max-luminance TID:float Definit la luminance maximale en candelas par metre carre (cd/m^2). La valeur devrait etre inferieure a 9999.99. --min-luminance TID:float Definit la luminance minimale en candelas par metre carre (cd/m^2). La valeur devrait etre inferieure a 999.9999. --projection-type TID:method Definit la methode de projection video utilisee. Les valeurs valides sont 0 (projection rectangulaire), 1 (projection equirectangulaire), 2 (projection en carte cubique) et 3 (projection en treillis). --projection-private TID:data Definit des donnees privees qui s'appliquent seulement a une projection specifique. Les donnees doivent etre fournies en nombres hexadecimaux avec ou sans le prefixe "0x" avec ou sans espaces. --projection-pose-yaw TID:float Specifie une rotation en lacet de la projection. --projection-pose-pitch TID:float Specifie une rotation en tangage de la projection. --projection-pose-roll TID:float Specifie une rotation en roulis de la projection. --field-order TID:n Definit l'ordre de champ pour la piste video avec l'ID de piste TID. L'ordre doit etre l'un de ces nombres : 0: progressif ; 1: entrelace avec le champ du haut affiche en premier et le champ du haut stocke en premier ; 2: ordre de champ indetermine ; 6: entrelace avec le champ du bas affiche en premier et le champ du bas stocke en premier ; 9: entrelace avec le champ du bas affiche en premier et le champ du haut stocke en premier ; 14: entrelace avec le champ du haut affiche en premier et le champ du bas stocke en premier --stereo-mode TID:n|symbolic-name Definit le mode stereo pour la piste video avec l'ID de piste TID. Le mode peut soit etre un nombre n entre 0 et 14 soit un nom symbolique. Tous les nombres et noms valides peuvent etre listes avec l'option --list-stereo-modes. Options ne s'appliquant qu'aux pistes de sous-titres texte --sub-charset TID:character-set Definit le jeu de caracteres pour la conversion vers UTF-8 des sous-titres UTF-8 pour l'ID de piste donne. Si non specifie, le jeu de caracteres sera deduit de la << locale >> courante. Noter qu'un jeu de caracteres n'est pas requis pour les sous-titres lus depuis des fichiers Matroska(TM) ou des flux Kate, car ils sont toujours stockes en UTF-8. Voir la section a propos des fichiers texte et des jeux de caracteres pour savoir comment mkvmerge(1) convertit les jeux de caracteres. Cette option peut etre utilisee de multiples fois pour un fichier source en s'appliquant a plusieurs pistes par selection de differents ID de pistes a chaque fois. Autres options -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 utilisee, alors la seule autre option permise est le nom de fichier. Le format de sortie utilise pour le resultat peut etre modifie avec l'option --identification-format. -J file-name Ceci est un alias pratique pour "--identification-format json --identify file-name". -F, --identification-format format Determine le format cible utilise par l'option --identify. Les formats suivants sont pris en charge : text (par defaut si cette option n'est pas utilisee) et json. 1. Le format text est court et lisible. Il consiste en une ligne par element trouve (conteneur, pistes, pieces jointes, etc.). Ce format n'est pas destine a etre analyse. La sortie sera traduite dans la langue qu'mkvmerge(1) utilise (voir aussi --ui-language). 2. Le format json genere une representation JSON lisible par machine. Ce format suit le schema JSON decrit dans le fichier suivant : mkvmerge-identification-output-schema-v18.json[3] Toutes les versions du schema JSON sont disponibles en ligne et dans les archives publiees du code source. --probe-range-percentage percentage Les types de fichiers tels que les flux de programme et de transport MPEG (.vob, .m2ts) necessite une certaine quantite de donnees a examiner afin de detecter toutes les pistes contenues dans le fichier. Cette quantite est de 0.3% de la taille du fichier source ou 10 Mo, selon la plus elevee. Si les pistes sont connues pour etre presentes mais non trouvees, alors le pourcentage a analyser peut etre modifie avec cette option. Un minimum de 10 Mo est requis et ne peut pas etre modifie. --list-audio-emphasis Liste tous les nombres valides et leurs noms symboliques correspondants pour l'option --audio-emphasis option. --list-languages Liste toutes les langues et leurs codes ISO 639-2 qui peuvent etre utilisees avec l'option --language. --list-stereo-modes Liste tous les nombres valides et leurs noms symboliques correspondants pour l'option --stereo-mode. -l, --list-types Liste les types de fichiers source pris en charge. --priority priority Definit la priorite du processus execute avec mkvmerge(1). Les valeurs valides sont 'lowest', 'lower', 'normal', 'higher' et 'highest'. Si absente, alors 'normal' est utilise. Sur les systemes Unix, mkvmerge(1) utilisera la fonction nice(2). Par consequent, seulement le super utilisateur peut utiliser 'higher' et 'highest'. Sur Windows, toutes les valeurs sont utilisables par tous les utilisateurs. Selectionner 'lowest' oblige aussi mkvmerge(1) a selectionner la priorite E/S ralentie en plus de la priorite processus la plus petite possible. --command-line-charset character-set Definit le jeu de caracteres pour convertir les chaines donnees en ligne de commande. C'est par defaut le jeu de caracteres fourni par la << locale >> actuelle du systeme. Ce parametre s'applique aux arguments des options suivantes : --title, --track-name et --attachment-description. --output-charset character-set Definit le jeu de caracteres dans lequel les chaines en sortie sont converties. Par defaut, celui-ci correspond a celui donne par la << locale >> du systeme. -r, --redirect-output file-name Ecrit tous les messages vers le fichier file-name plutot que vers la console. Alors que cela peut etre fait facilement avec la redirection de sortie, il y a des cas dans lesquels cette option est necessaire : quand le terminal reinterprete la sortie avant de l'ecrire vers un ficher. Le jeu de caracteres defini avec --output-charset est honore. --flush-on-close Indique au programme d'envoyer toutes les donnees cachees en memoire vers le support de stockage lors de la fermeture de fichiers ouverts en ecriture. Ceci peut etre utilise pour eviter la perte de donnees lors de coupures de courant ou pour contourner certains problemes du systeme d'exploitation ou de pilotes. L'inconvenient est que le multiplexage sera plus long du fait que mkvmerge devra attendre que toutes les donnees soient ecrites sur le support de stockage avant de quitter. Voir les problemes #2469 et #2480 sur le suivi des bogues de MKVToolNix pour des discussions approfondies sur les avantages et inconvenients. --ui-language code Force les traductions pour la langue code a utiliser (par ex. 'fr_FR' pour les traductions francaises). Saisir 'list' comme code obligera le logiciel a generer la liste des traductions disponibles. --abort-on-warnings Demande au programme d'abandonner apres le premier avertissement. Le code de fermeture sera egal a 1. --deterministic seed Permet la creation de fichiers identiques a l'octet pres si la meme version de mkvmerge(1) est utilisee avec les memes fichiers source, le meme jeu d'options et la meme amorce. Noter que le champ d'information de segment << date >> n'est pas ecrit dans ce mode. L'amorce peut etre une chaine quelconque, pas necessairement un nombre. L'obtention de fichiers identiques a l'octet pres ne peut etre garantie que dans les conditions suivantes : 1. La meme version de mkvmerge(1) construite avec les memes versions de libEBML et de libMatroska est utilisee. 2. Les fichiers source sont identiques a l'octet pres. 3. Les memes options en ligne de commande sont utilisees dans le meme ordre (a l'exception notable de --output ...). Utiliser d'autres versions de mkvmerge(1) ou d'autres options en ligne de commande peut resulter en un fichier identique a l'octet, mais ce n'est pas garanti. --debug topic Activer le debogage pour une fonctionnalite specifique. Cette option est utile uniquement pour les developpeurs. --engage feature Active les fonctionnalites experimentales. Une liste des fonctionnalites disponibles peut etre demandee avec mkvmerge --engage list. Ces fonctionnalites ne devraient pas etre utilisees en situations normales. --gui-mode Active l'interface graphique utilisateur. Dans ce mode, des lignes specialement formatees peuvent etre generees et informer une GUI de la situation. Ces messages suivent le format '#GUI#message'. Le message peut etre suivi d'une paire cle/valeur comme '#GUI#message#key1=value1#key2=value2...'. Ni les messages ni les cles ne sont traduits, et sont toujours generes 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 a propos des fonctionnalites optionnelles qui ont ete compilees et quitte. La premiere ligne de sortie sera l'information de version. Toutes les lignes suivantes contiennent exactement un mot dont la presence indique que la fonctionnalite a ete compilee. Ces fonctionnalites sont : o '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. UTILISATION Pour chaue fichier, l'utilisateur peut selectionner quelle pistes mkvmerge(1) devrait prendre. Elles sont toutes mises dans le fichier specifie avec -o. Une liste des formats source connus (et pris en charge) peut etre 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" . ORDRE DES OPTIONS L'ordre dans lequel les options sont saisies est important pour quelques options. Les options appartiennent a deux categories : 1. Les options qui affectent le programme globalement et ne sont pas liees a un fichier source. Ce sont en particulier, mais pas seulement, --command-line-charset, --output ou --title. Elles peuvent apparaitre n'importe ou 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 meme fichier source (ou aux pistes du meme fichier source) peuvent etre ecrites dans un ordre quelconque du moment qu'elles apparaissent avant ce nom de fichier source. Des exemples pour des options s'appliquant a un fichier source sont --no-chapters ou --chapter-charset. Des exemples pour options s'appliquant a une piste unique sont --default-duration ou --language. Les options sont traitees de la gauche vers la droite. Si une option apparait plusieurs fois dans le meme contexte, alors la derniere sera utilisee. Le titre sera donc defini a "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 utilisees dans des contextes differents. Meme si on les applique a la meme ID de piste, elles s'appliquent a des fichiers source differents et donc des contextes differents : $ mkvmerge -o output.mkv --language 0:fre francais.ogg --language 0:deu deutsch.ogg EXEMPLES Supposons un fichier appele MyMovie.avi et la piste audio dans un fichier separe , par ex. 'MyMovie.wav'. On veut d'abord encoder l'audio en OggVorbis(TM) : $ oggenc -q4 -oMyMovie.ogg MyMovie.wav Apres quelques minutes, on peut joindre l'audio et la video : $ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg Si AVI contient deja une piste audio alors elle sera aussi copiee (si mkvmerge(1) prend en charge le format audio). Pour l'eviter, faire simplement $ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg Apres reflexion, une autre piste audio est numerisee, par ex. les commentaires du realisateur ou une autre langue vers 'MyMovie-add-audio.wav'. On peut l'encoder a 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 resultat similaire peut etre obtenu avec $ mkvmerge -o MM-complete.mkv -A MyMovie.avi MyMovie.ogg MyMovie-add-audio.ogg Executer maintenant mplayer(TM) et apprecier. En cas de pistes audio multiples (ou meme video) alors il est possible d'indiquer a mplayer(TM) quelle piste jouer avec les options '-vid' et '-aid'. Celles-ci sont basees sur 0 et ne differencient pas la video et l'audio. On peut obtenir un piste audio synchronisee facilement. D'abord determiner 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 debut de la piste audio avec l'ID 12345 issue de 'outofsync.ogg'. Quelques films debutent correctement synchronises puis se desynchronisent lentement subissent. Pour ces films, on peut specifier un delai applique a tous les horodatages -- aucune donnee ajoutee ou retiree. Si le delai est trop petit/grand, le resultat est mauvais. Un exemple est un episode transcode qui etait decale de 0.2 secondes a la sequence qui etait longue de 77340 trames. A 29.97 tps 0.2 seconde correspond a approx. 6 trames. Operation appliquee $ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.mkv Le resultat etait correct. Les options de synchronisation peuvent aussi etre utilisees pour les sous-titres de la meme maniere. 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 repertoire 'contrib/subrip'. L'operation generale 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 resultantes en texte avec gocr : $ pgm2txt mymovie 3. verifie l'orthographe des fichiers texte resultants : $ ispell -d american *txt 4. convertit les fichiers texte en fichier SRT : $ srttool -s -w -i mymovie.srtx -o mymovie.srt Le fichier resultant peut etre utilise comme fichier source pour mkvmerge(1) : $ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt Il est facile de specifier la langue d'une piste donnee. 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 souhaitee. Supposons qu'il y a 2 pistes audio dans un fichier Matroska(TM) dont il faut definir les codes langue et que leurs ID de pistes sont 2 et 3. Cela peut etre realise 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-etre que vous aimeriez aussi que le lecteur utilise la langue Neerlandaise comme langue par defaut. Vous avez egalement des sous-titres supplementaires, en Anglais et en Francais, et que le lecteur desire afficher les francais par defaut. Cela peut etre fait avec $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut --default-track-flag 3 without-lang-codes.mkv --language 0:eng english.srt --default-track-flag 0 --language 0:fre french.srt Si les indicateurs de langue ou de << Piste par defaut >> specifies dans la sortie de mkvinfo(1) ne sont pas visibles, merci de lire la section relative aux valeurs par defaut. Desactiver la compression d'un fichier source. $ mkvmerge -o no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt ID DE PISTES ID de pistes normales Quelques unes des options pour mkvmerge(1) necessitent un ID de piste pour specifier a quelle piste elles devraient s'appliquer. Ces ID de pistes sont imprimes par les lecteurs lors du demuxage du fichier source actuel., ou si mkvmerge(1) est appele avec l'option --identify. Un exemple d'une telle sortie : $ mkvmerge -i v.mkv File 'v.mkv': container: Matroska(TM) 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 assignes aux pistes placees dans le fichier MKV cible avec les ID de pistes des fichiers sources. Seuls les ID de pistes des fichiers sources sont utilises pour les options necessitant ces valeurs. Noter aussi que chaque fichier source possede son propre jeu d'ID de pistes. Par consequent les ID de pistes pour le fichier 'file1.ext' tels que rapportes par 'mkvmerge --identify' ne changent pas quelque soit le nombre de fichiers sources ou dans quelle position 'file1.ext' est utilise. Les ID de pistes sont assignees comme ceci : o Les fichiers AVI : la piste video a l'ID 0. Les pistes audio ont leurs ID par ordre croissant et debutant a 1. o Fichiers AAC, AC-3, MP3, SRT et WAV : la piste une de ce fichier prend l'ID 0. o La plupart des autres fichiers : les ID de pistes sont assignees dans l'ordre des pistes dans le fichiers en debutant a 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. ID de pistes speciales Il existe plusieurs ID qui ont une signification speciale et qui n'apparaissent pas lors de l'identification. L'ID de piste speciale '-1' est un joker et applique le commutateur donne a toutes les pistes qui sont lues depuis un fichier source. L'ID de piste special << -2 >> fait reference aux chapitres d'un fichier source. Actuellement seule l'option --sync utilise cet ID special. Comme alternative a --sync -2:..., l'option --chapter-sync ... peut etre utilisee. GESTION DES LANGUES Matroska(TM) prend en charge deux types differents d'elements de langue : l'ancien element << Language >> deprecie contenant des codes ISO 639-2 alpha 3, et les nouvelles balises << LanguageIETF >> qui contiennent des balises de langue IETF BCP 47. Toutes les options de mkvmerge(1) qui acceptent une langue acceptent la balise de langue BCP 47. Quand c'est possible, mkvmerge(1) derivera la valeur de l'element << Language >> deprecie a partir des balises de langue BCP 47. Lors de l'identification d'un fichier en mode JSON, les elements << LanguageIETF >> d'entete de piste existants seront convertis vers la propriete de piste language_ietf. Lors de l'ecriture d'un fichier, mkvmerge(1) ecrira toujours les elements << LanguageIETF >>, << ChapLanguageIETF >> et << TagLanguageIETF >> (ces deux derniers seulement si des chapitres ou des balises sont ecrites, respectivement). En plus de ces elements, les anciens elements correspondants seront ecrits ; ils seront definis comme la partie du code ISO 639-2 de la balise de langue BCP 47. Par exemple quand la langue de piste est definie en sr-Cyrl-RS, << LanguageIETF >> sera defini en sr-Cyrl-RS et l'ancien element << Language >> sera defini en srp. Lors de la lecture de fichiers (Matroska, fichiers XML de balises ou de chapitres, etc.) qui contiennent deja des elements << ...LanguageIETF >>, ces elements seront conserves. Sinon les elements << ...LanguageIETF >> seront ajoutes selon les options en ligne de commande et les autres elements << ...Language >> existants deprecies. a creation des nouveaux elements peut etre completement desactivee avec l'option en ligne de commande --disable-language-ietf. Elle prend effet sur les trois nouveaux elements. Il est possible de choisir la methode de normalisation appliquee aux sous-balises de langue etendue avec le parametre --normalize-language-ietf. FICHIERS TEXTE ET CONVERSIONS DE JEUX DE CARACTERES Note Cette section s'applique a tous les logiciels de MKVToolNix meme si elle ne mentionne que mkvmerge(1). Introduction Tout le texte dans un fichier Matroska(TM) est encode en UTF-8. Cela signifie que mkvmerge(1) doit convertir chaque fichier texte lu et chaque texte donne sur la ligne de commande d'un jeu de caracteres en UTF-8. En corollaire, cela signifie aussi que la sortie de mkvmerge(1) doit etre convertie d'UTF-8 vers ce jeu de caracteres, par ex. si une traduction autre qu'Anglaise est utilisee avec --ui-language ou pour un texte provenant d'un fichier Matroska(TM). mkvmerge(1) effectue cette conversion automatiquement d'apres la presence d'un marqueur d'ordre d'octet (byte order marker, soit : BOM) ou la << locale >> du systeme. Le jeu de caracteres deduit de la << locale >> depend du systeme d'exploitation sur lequel est execute mkvmerge(1). Marqueur d'ordre d'octet (byte order markers ou BOM) Les fichiers texte qui debutent avec un BOM sont deja encodes avec une des representations 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 parametre qui autrement definirait le jeu de caracteres pour un tel fichier (par ex. --sub-charset) est silencieusement ignore. Linux et les systemes de type Unix incluant macOS Sur les systemes de type Unix mkvmerge(1) utilise l'appel systeme setlocale(3) qui a son tour utilise les variables d'environnement LANG, LC_ALL et LC_CYPE. Le jeu de caracteres resultant est souvent un de la famille UTF-8 ou ISO-8859-* et est utilise pour toutes les operations de fichier texte, pour l'encodage des chaines sur la ligne de commande et pour la sortie vers la console. Windows Sur Windows, le jeu de caracteres par defaut utilise pour convertir les fichiers texte est determine par un appel au systeme d'appel GetACP(). La lecture de la ligne de commande est effectuee avec la fonction GetCommandLineW() qui retourne deja une chaine Unicode. Par consequent l'option --command-line-charset est ignoree sur Windows. La sortie vers la console consiste en trois scenarios : 1. Si la sortie est redirigee avec l'option --redirect-output, alors le jeu de caracteres par defaut est UTF-8. Ceci peut etre modifie avec --output-charset. 2. Si la sortie est redirigee avec cmd.exe elle-meme, par ex. avec mkvinfo file.mkv > info.txt, alors le jeu de caracteres est toujours UTF-8 et ne peut pas etre modifie. 3. Sinon (a l'ecriture directe vers la console) la fonction Windows WriteConsoleW() est utilisee et l'option --output-charset est ignoree. La console devrait etre capable de sortir tous les caracteres Unicode pour lesquels la prise en charge de la langue correspondante est assuree (par ex. les caracteres Chinois ne devraient pas etre affiches sur les versions Anglaises de Windows). Options de ligne de commande Les options suivantes existent et permettent de specifier les jeux de caracteres : o --sub-charset pour les fichiers de sous-titres texte et les pistes de sous-titres texte stockees dans des formats de conteneurs pour lesquels le jeu de caracteres ne peut pas etre determine sans ambiguite (par ex. les fichiers Ogg), o --chapter-charset pour les fichiers texte de chapitres et pour les chapitres et titres de fichiers stockes dans des formats de conteneur pour lesquels le jeu de caracteres ne peut pas etre determine sans ambiguite (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), o --command-line-charset pour toutes les chaines sur la ligne de commande, o --output-charset pour toutes les chaines ecrites vers la console ou vers un fichier si la sortie a ete redirigee avec l'option --redirect-output. Sue les systeme non Windows, le jeu de caracteres par defaut pour la sortie est celui actuel du systeme. Sur Windows c'est par defaut UTF-8 pour la redirection avec --redirect-output et avec cmd.exe elle-meme, par ex. mkvinfo file.mkv > info.txt. FICHIERS DOPTIONS Un fichier d'options est un fichier ou mkvmerge(1) peut lire des arguments en ligne de commande supplementaires. Ce peut etre utilise pour contourner certaines limitations du shell ou du systeme d'exploitation a l'execution de programmes externes comme une longueur de ligne de commande limitee. Un fichier d'option contient des donnees formatees en JSON. Son contenu doit etre un tableau valide JSON comprenant seulement des chaines JSON. L'encodage du fichier doit etre UTF-8. Le fichier ne devrait pas debuter avec un marquer d'ordre d'octet (BOM), mais si c'est le cas, il sera ignore. Les regles pour echapper les caracteres speciaux en JSON sont celles de la specification JSON officielle, RFC 7159[4]. Le nom de fichier d'option lui-meme doit etre specifie comme argument en ligne de commande et prefixe du caractere '@'. La ligne de commande 'mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg' pourrait etre convertie en le fichier d'options JSON suivant nomme par ex. 'options.json' : [ "-o", "c:\\Matroska\\my file.mkv", "--title", "#65", "-A", "a movie.avi", "sound.ogg" ] La commande correspondante serait alors 'mkvmerge @options.json'. LIAGE DE FICHIERS Matroska(TM) prend en charge le liage de ficher qui indique simplement qu'un fichier specifique est le predecesseur ou successeur du fichier courant. Precisement, ce ne sont pas les fichiers qui sont lies 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 appropriee. Chaque segment est identifie par un UID de segment unique large de 128 bit. Cet UID est automatiquement genere par mkvmerge(1). Le liage est principalement realise en placant les UID de segment (abrevie en : SID) du fichier precedent/suivant dans les informations d'entete de segment. mkvinfo(1) affiche ces SID s'il les trouve. Si un fichier est scinde en plusieurs plus petits et le liage est utilise, alors les horodatages ne recommenceront pas a 0 mais vont continuer ou ils se sont termines dans le dernier fichier. Comme cela le temps absolu est conserve meme si les fichiers precedents ne sont pas disponibles (par ex. en diffusion de flux). En l'absence de liage, les horodatages devraient commencer a 0 pour chaque fichier. Par defaut 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 activee. Que la scission soit active ou pas, l'utilisateur peut indiquer a mkvmerge(1) de lier les fichiers produits a des SID specifiques. 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) genere : 16 nombres hexadecimaux entre 0x00 et 0xff chacun prefixe 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 etre utilisee : 16 nombres hexadecimaux entre 0x00 et 0xff sans le prefixe '0x' et sans les espaces, par ex. '41da7366d9cfb21eae78ebb45ecab393'. Si la scission est utilisee, alors le premier fichier est lie au SID donne avec --link-to-previous et le dernier fichier est lie au SID donne avec --link-to-next. Si la scission n'est pas utilisee, alors le fichier cible unique sera lie aux deux SIDs. VALEURS PAR DEFAUT La specification Matroska(TM) dicte que certains elements possedent une valeur par defaut. Habituellement un element n'est pas ecrit vers le fichier si sa valeur est egale a la valeur par defaut afin de gagner de l'espace. Les elements que l'utilisateur pourraient manquer dans la sortie de mkvinfo(1) sont les elements langue et l'indicateur de piste par defaut. La valeur par defaut de la language est English ('eng'), et la valeur par defaut de l'indicateur de piste par defaut est true. Par consequent, si --language 0:eng est utilise pour une piste, alors il ne sera pas affiche dans la sortie de mkvinfo(1). PIECES JOINTES Peut-etre l''utilisateur veut-il conserver quelques photos avec le fichier Matroska(TM), ou utiliser des sous-titres SSA avec une police de caracteres TrueType(TM) speciale qui est vraiment rare. Dans ces cas-la, il faut joindre ces fichiers (= pieces) au fichier Matroska(TM). Ils ne vont pas seulement y etre ajoutes, mais aussi embarques. 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 pieces jointes est utilise comme fichier source, alors mkvmerge(1) copiera les pieces jointes dans le nouveau fichier. La selection des pieces jointes copiees ou non peut etre modifiee avec les options --attachments et --no-attachments. CHAPITRES Le systeme de chapitres de Matroska(TM) est plsu evolue que le vieux systeme utilise par les fichiers OGM. Les specifications completes peuvent etre trouvees sur le site Web Matroska(TM)[1]. mkvmerge(1) prend en charge 2 sortes de fichiers de chapitres comme source. Le 1er format, appele << simple format de chapitres >>, est le meme format que les outils OGM utilisent. Le 2nd format est une format de chapitres en XML qui prend en charge toutes les fonctionnalites 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). Le format de chapitres simple Ce format consiste en paires de lignes qui debutent avec 'CHAPTERxx=' et 'CHAPTERxxNAME=' respectivement. La premiere contient l'horodatage de depart 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) va transformer chaque paire ou lignes en un ChapterAtom Matroska(TM). Il ne definit aucun ChapterTrackNumber, ce qui signifie que tous les chapitres s'appliquent tous a toutes les pistes du fichier. Comme c'est un fichier texte, une conversion du jeu de caracteres pourrait etre necessaire. Voir la section a propos des fichiers texte et jeux de caracteres pour savoir comment mkvmerge(1) convertit les jeux de caracteres. Le format de chapitres base sur XML Le format de chapitres base sur XML ressemble a cet exemple : 00:00:30.000 00:01:20.000 A short chapter eng 00:00:46.000 00:01:10.000 A part of that short chapter eng Avec ce format, trois choses sont possibles qui sont impossibles avec le format de chapitres simple : 1. L'horodatage de fin de chapitre peut etre defini, 2. les chapitres peuvent etre imbriques, 3. la langue et le pays peuvent etre definis. La distribution mkvtoolnix contient quelques fichiers d'echantillon dans le sous-dossier doc qui peuvent etre utilises comme point de depart. La liste suivante montre les balises XML reconnues, leurs types de donnees et, quand approprie, 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) Lecture des chapitres de Blu-ray mkvmerge(1) peut lire les chapitres de Blu-ray non proteges. Pour cela, il faut utiliser le chemin d'une des listes de lecture MPLS avec le parametre --chapters. Exemple : --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls Lecture des chapitres des DVD Quand MKVToolNix est compile avec la bibliotheque 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 parametre--chapters. Comme un DVD peut posseder plus d'un titre et que chaque titre a son propre ensemble de chapitres, il est possible d'ajouter un double point suivi du numero de titre desire a la fin de l'argument de nom de fichier. Le numero de titre par defaut est 1. Exemple : --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2 Notes generales En scindant des fichiers, mkvmerge(1) ajustera correctement aussi les chapitres. Cela signifie que chaque fichier inclue seulement les entrees de chapitres qui s'y appliquent, et que les horodatages seront decales pour correspondre aux nouveaux horodatages de chaque fichier cible. mkvmerge(1) est capable de copier des chapitres de fichiers sources Matroska(TM) a moins que cela soit explicitement desactive 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 fusionnes mais laisses separes en ChapterEditions. C'est seulement si les chapitres sont lus depuis plusieurs fichiers Matroska(TM) ou XML qui partagent les memes UID d'edition que les chapitres seront fusionnes en un unique ChapterEdition. Si cette fusion est aussi souhaitee 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. BALISES Introduction Le systeme de balises Matroska(TM) est similaire a celui des autres conteneurs : un ensemble de paires KEY=VALUE. Cependant, dans Matroska(TM) ces balises peuvent aussi etre imbriquees, et KEY et VALUE des elements a eux seuls. Le fichier d'exemple example-tags-2.xml montre comment utiliser ce systeme. Portee des balises Les balises Matroska(TM) ne sont pas appliquees auto. au fichier complet. C'est possible, mais elles peuvent aussi etre appliquees a differentes parties du fichier : a une ou plusieurs pistes, a un ou plusieurs chapitres, voire a une combinaison des deux. La specification Matroska(TM)[5] donne plus de details sur cet etat de fait. Un fait important est que les balises sont liees aux pistes ou aux chapitres avec l'element balise Matroska(TM) Targets, et que les UID utilises pour ce liage ne sont pas les ID de pistes que mkvmerge(1) utilise partout. Les numeros utilises sont plutot les UID que mkvmerge(1) calcule automatiquement (si la piste est issue d'un format de fichier autre que Matroska(TM)) ou qui sont copies du fichier source si la piste du fichier source est un fichier Matroska(TM). Par consequent 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) reconnait deux options aveclesquelles on peut ajouter des balises aux fichiers Matroska(TM) : les --global-tags et the --tags. Le difference est que la premiere, --global-tags, fera les balises s'appliquer au fichier complet en retirant tous ces elements Targets mentionnes plus haut. La derniere option, --tags, inserera automatiquement l'UID que mkvmerge(1) genere pour la balise specifiee avec la partie TID de l'option --tags. Exemple Disons qu'on veut ajouter des balises a une piste video lue depuis un fichier AVI. mkvmerge --identify file.avi indique que cet ID de piste video (a ne pas confondre avec les UID !) est 0. A partir de la, on peut creer le fichier de balises en laissant tous les elements Targetset appeler mkvmerge(1) : $ mkvmerge -o file.mkv --tags 0:tags.xml file.avi Format de fichier de balises mkvmerge(1) prend en charge un format de fichier balises en XML. Le format est tres proche de la specification Matroska(TM)[5]. Les distributions de binaires et sources de MKVToolNix contiennent un echantillon de fichier appele example-tags-2.xml qui liste simplement toutes les balises connues et qui peut etre utilise comme base pour des fichiers balises reels. Les bases sont : o L'element le plus externes doit etre . o Une balise logique est contenue a l'interieur d'une paire de balises XML . o Les espaces blancs avant et apres le contenu d'une balise sont ignorees. Types de donnees Le nouveau systeme de balises Matroska(TM) reconnait seulement deux types de donnees, une chaine UTF-8 et un type binaire. Le premier est utilise pour le nom de balise et l'element tandis que le type binaire est utilise pour l'element . Comme les donnees binaires ne peuvent pas etre stockees dans un fichier XML, mkvmerge(1) prend en charge deux autres methodes pour les stocker. Si le contenu d'une balise XML debute avec '@', alors le texte suivant est traite comme un nom de fichier. Le contenu du fichier correspondant est copie dans l'element Matroska(TM). Sinon les donnees sont attendues encodees en Base64. C'est un encodage qui transforme les donnees binaires en un jeu limite de caracteres ASCII et qui est utilise par ex. dans les programmes de courriels. mkvextract(1) sortira des donnees encodees en Base64 pour les elements binaires. Le systeme de balises obsolete reconnait d'autres types de donnees qui peuvent etre retrouves dans les specifications de balises Matroska(TM). Comme mkvmerge(1) ne prend plus en charge ce systeme, ces types ne sont pas decrits ici. Balises connues pour le format de fichier XML La liste suivante montre les balises XML reconnues, leurs types de donnees et, quand approprie, 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) INFORMATIONS DE SEGMENT Avec un fichier XML d'informations de segment, il est possible de definir certaines valeurs dans le champ d'entete d'"informations de segment" d'un fichier Matroska(TM). Toutes ces valeurs ne peuvent pas etre definies par d'autres options en ligne de commande. D'autres champs d'entete d'"informations de segment" peuvent etre definis 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 elements qui ne peuvent etre definis ni par des options en ligne de commande ni par les fichiers XML. Ceux-ci incluent les elements suivants : DateUTC (aussi connu en "muxing date"), MuxingApp, WritingApp et Duration. Ils sont toujours definis par mkvmerge(1) lui-meme. La liste suivante montre les balises XML reconnues, leurs types de donnees et, quand approprie, 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) DISPOSITION DUN FICHIER MATROSKA(TM) La disposition d'un fichier Matroska(TM) est assez flexible. mkvmerge(1) rendra un fichier de maniere predefinie. Le fichier resultant ressemble a 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 elements entre accolades sont facultatifs et dependent des contenus et des options utilisees. Quelques remarques : o meta seek #1 inclut seulement un petit nombre d'elements de niveau 1, et seulement s'ils existent reellement : pieces jointes, chapitres, points de montage, balises, meta seek #2. D'anciennes versions de mkvmerge(1) placaient aussi les grappes dans cet element meta seek. Par consequent, il etait necessaire de deviner de maniere imprecise combien et assez d'espace a reserver. Cela echouait souvent. Maintenant, seules les grappes sont stockees dans meta seek #2, et meta seek #1 se refere a l'element meta seek #2. o Les elements de pieces jointes, de chapitres et de balises sont seulement presents s'ils ont ete ajoutes. Le fichier Matroska(TM) le plus petit possible devrait ressembler a ceci : [EBML head] [segment [segment information] [track information] [cluster 1]] Ceci devrait etre le cas pour les fichiers audio seuls. FICHIERS EXTERNES DHORODATAGE mkvmerge(1) permet lui-meme a l'utilisateur de choisir l'horodatage d'une piste specifique. Ceci peut etre utilise pour creer des fichiers avec une video a debit de trames variable ou inclure des blancs dans l'audio. une trame dans ce cas est l'unite que mkvmerge(1) cree separement par bloc Matroska(TM). Pour la video c'est exactement une trame, pour l'audio c'est un paquet du type audio specifique. Par ex. pour AC-3, cela serait un paquet contenant 1536 echantillons. Les fichiers d'horodatage qui sont utilises quand des pistes sont ajoutees l'une a l'autre doivent seulement etre specifies pour la premiere partie dans une chaine de pistes. Par ex., pour ajouter deux fichiers, v1.avi et v2.avi, et utiliser les horodatages, alors la ligne de commande ressemblera a ceci : $ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi mkvmerge(1) reconnait quatre formats. La premiere ligne contient toujours le numero de version. Les lignes vides, les lignes ne contenant que des espaces blanches et les lignes commencant avec '#' sont ignorees. Format de fichier d'horodatage v1 Ce format debute avec la ligne de version. La seconde ligne declare le nombre par defaut de de trames par seconde. Toutes les lignes suivantes contiennent trois chiffres separes par une virgule : la trame de debut (0 est la premiere), la trame de fin et le nombre de trames dans cette plage. Le nombre de FPS est un nombre flottant avec un point '.' comme separateur decimal. Les plages peuvent contenir des blancs pour lesquels le FPS par defaut est utilise. Un exemple : # format d'horodatage v1 suppose 27.930 800,1000,25 1500,1700,30 Format de fichier d'horodatage v2 Dans ce format chaque ligne contient un horodatage pour la trame correspondante. Cet horodatage doit etre donne en precision a la milliseconde. Cela peut etre 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 etre tries. Exemple pour 25fps : # format d'horodatage v2 0 40 80 Format de fichier d'horodatage v3 Dans ce format chaque ligne contient une duree en secondes suivie par un nombre facultatif de trames par seconde. Les deux peuvent etre des nombres flottants. Si le nombre de trames par seconde n'est pas present, celui par defaut est utilise. Pour l'audio il est preferable de laisser le codec calculer les horodatages de trames lui-meme. Pour cela on devrait utiliser 0.0 comme nombre de trames par seconde. Il est aussi possible de creer des blancs dans le flux en utilisant les mot cle 'gap' suivi par la duree 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 Format de fichier d'horodatage v4 Ce format esr identique au format v2. La seule difference est que les horodatages n'ont pas a etre tries. Ce format ne devrait presque jamais etre utilise. CODES DE FERMETURE mkvmerge(1) quitte avec l'un de ces trois codes de fermeture : o 0 -- Ce code de sortie signifie que le multiplexage s'est correctement termine. o 1 -- Dans ce cas mkvmerge(1) a emis au moins un avertissement, mais le multiplexage s'est poursuivi. une avertissement est prefixe avec le texte 'Avertissement :'. Selon les problemes le fichier resultant pourrait etre OK ou pas. Il est fortement recommande a l'utilisateur de verifier l'avertissement et le fichier resultant. o 2 -- Ce code de fermeture est utilise apres la survenue d'une erreur. mkvmerge(1) abandonne juste apres l'emission du message d'erreur. Les messages d'erreur vont des arguments errones en ligne de commande aux erreurs de lecture/ecriture en passant par les fichiers corrompus. VARIABLES DENVIRONMENT mkvmerge(1) utilise les variables par defaut qui determinent la << locale >> du systeme (par ex. LANG et la famille LC_*). Variables additionnelles : MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG et sa forme courte MTX_DEBUG Le contenu est traite comme s'il a ete passe via l'option --debug. MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE et sa forme courte MTX_ENGAGE Le contenu est traite comme s'il a ete passe via l'option --engage option. VOIR AUSSI mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1) WWW La derniere version peut toujours etre trouvee a la page d'accueil de MKVToolNix[6]. AUTEUR Moritz Bunkus Developpeur NOTES 1. site Web Matroska(TM) https://www.matroska.org/ 2. la page d'accueil IANA https://www.iana.org/assignments/media-types/ 3. mkvmerge-identification-output-schema-v18.json https://mkvtoolnix.download/doc/mkvmerge-identification-output- schema-v18.json 4. RFC 7159 https://tools.ietf.org/html/rfc7159 5. specification Matroska(TM) https://www.matroska.org/technical/specs/index.html 6. la page d'accueil de MKVToolNix https://mkvtoolnix.download/ MKVToolNix 83.0 2024-03-10 MKVMERGE(1)