mkvextract -- extrait les pistes d'un fichier Matroska(tm) vers d'autres fichiers

# 1. Résumé

mkvextract {source-filename} {mode1} options extraction-spec1 mode2 options extraction-spec2 …

# 2. Description

Ce logiciel extrait des parties spécifiques d'un fichier Matroska(tm) vers d'autres formats utiles. Le premier argument est le nom du fichier source qui doit être un fichier Matroska(tm).

Tous les autres arguments soit basculent vers un mode d'extraction particulier, soit modifient des options pour le mode en cours, soit spécifient quoi extraire vers quel fichier. Plusieurs modes peuvent être utilisés en invoquant mkvextract, ce qui permet d'extraire plusieurs choses en une seule passe. La plupart des options peuvent seulement être utilisées dans certains modes avec quelques options s'appliquant à tous les modes.

Est actuellement prise en charge l'extraction des pistes, balises, pièces jointes, chapitres, feuilles de montage CUE, horodatages et points de montage.

## 2.1. Options communes

Les options suivantes sont disponibles pour tous les modes et sont seulement décrites une seule fois dans cette section.

Option | Description
--- | ---
-f, --parse-fully | Définit le mode d'analyse à « complet ». Le mode par défaut n'analyse pas entièrement le fichier nais utilise les méta-éléments de recherche pour localiser les éléments requis d'un fichier source. Dans 99% des cas cela est suffisant. Mais pour les fichiers qui ne contiennent pas ces méta-éléments ou qui sont endommagés, l'utilisateur pourrait utiliser ce mode. L'analyse complète d'un fichier peut prendre plusieurs minutes tandis qu'une analyse rapide ne prend que quelques secondes.
--command-line-charset character-set | Définit le jeu de caractères utilisé pour la conversion des chaînes fournies en ligne de commande. Par défaut, celui-ci correspond à celui donné par la « locale » du système.
--output-charset character-set | Définit le jeu de caractères dans lequel les chaînes en sortie sont converties. Par défaut, celui-ci correspond à celui donné par la « locale » du système.
-r, --redirect-output file-name | Écrit tous les messages dans le fichier file-name plutôt que vers la console. Alors que cela peut être facilement fait avec la redirection de la sortie, il y a des cas pour lesquels cette option est nécessaire : quand le terminal réinterprète la sortie avant de l'écrire dans un fichier. Le jeu de caractères défini avec --output-charset est honoré.
--flush-on-close | Indique au programme d'envoyer toutes les données cachées en mémoire vers le support de stockage lors de la fermeture de fichiers ouverts en écriture. Ceci peut être utilisé pour éviter la perte de données lors de coupures de courant ou pour contourner certains problèmes du système d'exploitation ou de pilotes. L'inconvénient est que le multiplexage sera plus long du fait que mkvmerge devra attendre que toutes les données soient écrites sur le support de stockage avant de quitter. Voir les problèmes #2469 et #2480 sur le suivi des bogues de MKVToolNix pour des discussions approfondies sur les avantages et inconvénients.
--ui-language code | Force les traductions pour la langue code à utiliser (par ex. 'fr_FR' pour les traductions françaises). Saisir 'list' comme code obligera le logiciel à générer la liste des traductions disponibles.
--abort-on-warnings | Demande au programme d'abandonner après le premier avertissement. Le code de fermeture sera égal à 1.
--debug topic | Activer le débogage pour une fonctionnalité spécifique. Cette option est utile uniquement pour les développeurs.
--engage feature | Active les fonctionnalités expérimentales. Une liste des fonctions disponibles peut être demandée avec mkvextract --engage list. Ces fonctionnalités ne devraient pas être utilisées en situations normales.
--gui-mode | Active l'interface graphique utilisateur. Dans ce mode, des lignes spécialement formatées peuvent être générées et informer une GUI de la situation. Ces messages suivent le format '#GUI#message'. Le message peut être suivi d'une paire clé/valeur comme '#GUI#message#key1=value1#key2=value2…'. Ni les messages ni les clés ne sont traduits, et sont toujours générés en anglais.
-v, --verbose | Mode verbeux qui affiche tous les éléments Matroska(tm) importants à mesure qu'ils sont lus.
-h, --help | Affiche les informations d'utilisation et quitte.
-V, --version | Affiche les informations de version et quitte.
@options-file.json | Lit des arguments supplémentaires en ligne de commande depuis le fichier options-file. Pour une explication complète sur les formats pris en charge pour de tels fichiers, voir la section nommée « Fichiers d'options » sur la page man de mkvmerge(1).

## 2.2. Mode d'extraction des pistes

Syntaxe : mkvextract source-filename tracks [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

Les options de ligne de commande suivantes sont disponibles pour chaque piste en mode d'extraction de 'tracks'. Elles doivent apparaître avant les spécifications de piste (voir ci-dessous) auxquelles elles devraient s'appliquer.

Option | Description
--- | ---
-c character-set | Définit le jeu caractère pour en convertir la prochaine piste de texte de sous-titres. Seulement valide si l'ID de la nouvelle piste est une piste de texte de sous-titres. Par défaut UTF-8.
--blockadd niveau | Conserve seulement les BlockAdditions jusqu'à ce niveau. Par défaut, tous les niveaux. Cette option affecte seulement certains types de codecs comme WAVPACK4.
--cuesheet | Oblige mkvextract(1) à extraire une feuille de montage CUE à partir des données de balises et des informations de chapitres pour la piste suivante dans le fichier dont le nom est le nom de piste cible terminé par « .cue ».
--raw | Extrait les données brutes dans un fichier sans conteneur de données. À la différence du drapeau --fullraw, ce drapeau n'oblige pas les contenus de l'élément CodecPrivate à être écrits vers le fichier. Ce mode fonctionne avec tous les CodecIDs, même ceux que mkvextract(1) ne prend pas en charge, mais les fichiers résultants pourraient ne pas être utilisables.
--fullraw | Extrait les données brutes dans un fichier sans conteneur de données. Les contenus de l'élément CodecPrivate seront écrits vers le fichier en premier si la piste contient un tel élément d'entête. Ce mode fonctionne avec tous les CodecIDs, même ceux que mkvextract(1) ne prend pas en charge, mais les fichiers résultants pourraient ne pas être utilisables.
TID:outname | Oblige l'extraction de la piste avec l'ID TID dans le fichier outname si une telle piste existe dans le fichier source. Cette option peut être donnée plusieurs fois. Les ID de pistes sont les mêmes que celles données par l'option --identify de mkvmerge(1). Chaque nom cible devrait n'être utilisé qu'une seule fois, à l'exception des pistes RealAudio et RealVideo. Si le même nom est utilisé pour différentes pistes, alors ces pistes seront enregistrées dans le même fichier. Exemple :
    $ mkvextract input.mkv tracks 0:video.h264 2:output-two-vobsub-tracks.idx 3:output-two-vobsub-tracks.idx

## 2.3. Mode d'extraction des pièces jointes

Syntaxe : mkvextract source-filename attachments [options] AID1:outname1 [AID2:outname2 ...]

Option | Description
--- | ---
AID:outname | Oblige l'extraction de la pièce jointe avec l'ID AID dans le fichier outname si une telle pièce jointe existe dans le fichier source. Si outname est laissé vide, alors le nom de la pièce jointe du fichier source Matroska(tm) est utilisé. Cette option peut être donnée plusieurs fois. Les ID de pistes sont les mêmes que celles données par l'option --identifyde mkvmerge(1).

## 2.4. Mode d'extraction des chapitres

Syntaxe : mkvextract source-filename chapters [options] output-filename.xml

Option | Description
--- | ---
-s, --simple | Exporte les informations de chapitres dans un format simple utilisé dans l'outil OGM (CHAPTER01=..., CHAPTER01NAME=...). Dans ce mode quelques information doivent être mises de côté. Par défaut, les chapitres sont générés en format XML.
--simple-language langue | Si le format simple est activé, alors mkvextract(1) sortira seulement une entrée unique pour chaque atome de chapitre rencontré même si un atome de chapitre contient plus d'un nom de chapitre. Par défaut mkvextract(1) utilisera le premier nom de chapitre trouvé pour chaque atome quelque soit sa langue. Utiliser cette option permet à l'utilisateur de déterminer quels noms de chapitres sont sortis si les atomes contiennent plus d'un nom de chapitre. Le paramètre language doit être un code ISO 639-1 ou ISO 639-2.

Les chapitres sont écrits vers le fichier spécifié. Par défaut le format XML compris par mkvmerge(1) est utilisé. Si aucun chapitre n'est trouvé dans le fichier, le fichier source n'est pas créé.

## 2.5. Mode d'extraction des balises

Syntaxe : mkvextract source-filename tags [options] output-filename.xml

Les balises sont écrites vers le fichier spécifié dans le format XML compris par mkvmerge(1). Si aucune balise n'est trouvée dans le fichier, le fichier source n'est pas créé.

## 2.6. Mode d'extraction de feuille de montage CUE

Syntaxe : mkvextract source-filename cuesheet [options] output-filename.cue

La feuille de montage est écrite vers le fichier spécifié. Si aucun chapitre ou balise n'est trouvé dans le fichier, le fichier source n'est pas créé.

## 2.7. Mode d'extraction d'horodatage

Syntaxe : mkvextract source-filename timestamps_v2 [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

Option | Description
--- | ---
TID:outname | Oblige l'extraction des horodatages pour la piste avec l'ID TID dans le fichier outnamesi une telle piste existe dans le fichier source. Cette option peut être donnée plusieurs fois. Les ID de pistes sont les mêmes que celles données par l'option --identify de mkvmerge(1). Exemple :
    $ mkvextract input.mkv timestamps_v2 1:ts-track1.txt 2:ts-track2.txt

## 2.8. Mode d'extraction des feuilles de montage CUE

Syntaxe : mkvextract source-filename cues [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

Option | Description
--- | ---
TID:dest-filename | Oblige l'extraction des données de montage pour la piste avec l'ID TID dans le fichier outname si une telle piste existe dans le fichier source. Cette option peut être donnée plusieurs fois. Les ID de pistes sont les mêmes que celles données par l'option --identify de mkvmerge(1) et ne sont pas les numéros contenus dans l'élément CueTrack.

Le format de sortie est un simple format texte : une ligne par élément CuePoint avec des pairs key=value. Si un élément optionnel n'est pas présent dans un CuePoint (par ex. CueDuration), alors un tiret sera inscrit comme valeur.

Exemple :

    timestamp=00:00:13.305000000 duration=- cluster_position=757741 relative_position=11

Les clés possibles sont :

Option | Description
--- | ---
horodatage | L'horodatage du point de montage en précision nanoseconde. Le format est HH:MM:SS.nnnnnnnnn. Cet élément est toujours défini.
durée | La durée du point de montage en précision nanoseconde. Le format est HH:MM:SS.nnnnnnnnn.
cluster_position | La position absolue en octets dans le fichier Matroska(tm) où la grappe contenant l'élément référencé commence. Note: Dans un fichier Matroska(tm) CueClusterPosition est relatif au décalage du début des données de l'élément. Toutefois, la valeur fournie par le mode d'extraction de données de montage de mkvextract(1) contient déjà ce décalage et est un décalage absolu depuis le début du fichier.
relative_position | La position relative en octets dans la grappe où l'élément BlockGroup ou SimpleBlock auquel le point de montage se réfère commence. Note: Dans un fichier Matroska(tm) 1CueRelativePosition1 est relatif au décalage du début des données de la grappe. Toutefois, la valeur fournie par le mode d'extraction de données de montage de mkvextract(1) est relative à l'ID de la grappe. La position absolue dans le fichier peut être calculée en ajoutant cluster_position et relative_position.

Exemple :

    $ mkvextract input.mkv cues 1:cues-track1.txt 2:cues-track2.txt

# 3. Exemples

Extraction de chapitres et balises dans leur formats XML respectifs en même temps :

    $ mkvextract movie.mkv chapters movie-chapters.xml tags movie-tags.xml

Extraction de quelques piste et leurs horodatages respectifs en même temps :

    $ mkvextract "Un autre film.mkv" tracks 0:video.h265 "1:piste audio principale.aac" "2:commentaires du réalisateur.aac" timestamps_v2 "0:horodatages vidéo.txt" "1:horodatages piste audio principale.txt" "2:horodatages des commentaires du réalisateur.txt"

Extraction de chapitres dans le format Ogg/OGM et réencodage d'unepiste de sous-titre texte dans un autre jeu de caractère :

    $ mkvextract "Mon film.mkv" chapters --simple "Mes chapitres.txt" tracks -c MS-ANSI "2:Mes sous-titres.srt"

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

Pour une discussion approfondie sur la gestion des conversions de jeux de caractères des outils de la suite MKVToolNix, de l'encodage source/cible, de l'encodage de la ligne de commande, de l'encodage de la console, merci de voir les sections respectives nommées pareillement des pages man de mkvmerge(1).

# 5. Formats de fichier cible

La décision sur le format de sortie est basée sur le type de piste et non sur l'extension utilisée pour le nom de fichier cible. Les types de pistes suivantes sont prises en charge pour le moment :

Option | Description
--- | ---
A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC | Tous les fichiers AAC seront écrits dans un fichier AAC avec des entêtes ADTS avant chaque paquet. Les entêtes ADTS ne contiendront pas le champ emphase obsolète.
A_AC3, A_EAC3 | Celles-ci seront extraites en fichiers bruts AC-3.
A_ALAC | Les pistes ALAC sont écrites en fichiers CAF.
A_DTS | Celles-ci seront extraites en fichiers bruts DTS.
A_FLAC | Les pistes FLAC sont écrits en fichiers RAW FLAC.
A_MPEG/L2 | Les flux MPEG-1 Audio Layer II seront extraits vers des fichiers raw MP2.
A_MPEG/L3 | Celles-ci seront extraites en fichiers bruts MP3.
A_OPUS | Les pistes Opus(tm) sont écrites en fichiers OggOpus(tm).
A_PCM/INT/LIT, A_PCM/INT/BIG | Les données brutes PCM seront écrites en fichier WAV. Le données Big-endian entier seront converties en données little-endian ce faisant.
A_REAL/* | Les pistes RealAudio(tm) sont écrites en fichiers RealMedia(tm).
A_TRUEHD, A_MLP | Celles-ci seront extraites en fichiers bruts TrueHD/MLP.
A_TTA1 | Les pistes TrueAudio(tm) sont écrites en fichiers TTA. Merci de noter que du fait de la précision limitée de l'horodatage Matroska(tm), l'entête extraite du fichier sera différente pour ces deux champs : data_length (le nombre total d'échantillons du fichier) et CRC.
A_VORBIS | Vorbis audio va être écrit dans un fichier OggVorbis(tm) .
A_WAVPACK4 | Les pistes WavPack(tm) sont écrites en fichiers WV.
S_HDMV/PGS | Les sous-titres PGS seront écrits en fichiers SUP.
S_HDMV/TEXTST | Les sous-titres TextST seront écrits en format de fichier spécial inventé pour mkvmerge(1) et mkvextract(1).
S_KATE | Les flux Kate(tm) seront écrits en conteneur Ogg(tm).
S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS | Les sous-titres texte SSA et ASS seront respectivement écrits comme fichiers SSA/ASS.
S_TEXT/UTF8, S_TEXT/ASCII | Les sous-titres texte simple seront écrits comme fichiers SRT.
S_VOBSUB | Les sous-titres texte VobSub(tm) seront écrits comme fichiers SUB avec les fichiers d'index respectifs, comme fichiers IDX.
S_TEXT/USF | Les sous-titres texte USF seront écrits comme fichiers USF.
S_TEXT/WEBVTT | Les sous-titres texte WebVTT seront écrits comme fichiers WebVTT.
V_MPEG1, V_MPEG2 | Les pistes vidéo MPEG-1 and MPEG-2 seront écrites comme flux élémentaires MPEG.
V_MPEG4/ISO/AVC | Les pistes vidéoH.264 / AVC sont écrites comme flux élémentaires H.264 qui peuvent être post-traités avec par ex. MP4Box(tm) du paquet GPAC(tm).
V_MPEG4/ISO/HEVC | Les pistes vidéoH.265 / HEVC sont écrites comme flux élémentaires H.265 qui peuvent être post-traités avec par ex. MP4Box(tm) du paquet GPAC(tm).
V_MS/VFW/FOURCC | Les pistes vidéo à FPS constant avec ce CodecID sont écrites en fichiers AVI.
V_REAL/* | Les pistes RealVideo(tm) sont écrites en fichiers RealMedia(tm).
V_THEORA | Les flux Theora(tm) seront écrites en conteneur Ogg(tm)
V_VP8, V_VP9 | VP8 / VP9 pistes sont écrites pour IVF fichiers.
Balises | Les balises sont converties en format XML. Ce format est le même que mkvmerge(1) gère en lecture.
Pièces jointes | Les pièces jointes sont écrites dans le fichier de sortie telles quelles. Aucune conversion n'est effectuée.
Chapitres | Les chapitres sont convertis en format XML. Ce format est le même que mkvmerge(1) gère pour lire les chapitres. Autrement une version dépouillée peut être produite dans le format simple OGM.
Horodatages | Les codes temporels sont d'abord triés puis produits en fichier conforme avec le format de code temporel v2 prêt à être envoyé à mkvmerge(1). L'extraction vers d'autres formats (v1, v3 et v4) n'est pas prise en charge.

# 6. Codes de fermeture

mkvextract(1) ferme avec l'un de ces 3 codes de fermeture :

- 0 -- Ce code de sortie signifie que l'extraction s'est correctement terminée.

- 1 -- Dans ce cas mkvpropedit(1) a émis au moins un avertissement, mais la modification a continué. Un avertissement est préfixé avec le texte 'Avertissement :'. Selon le problème, les fichiers résultants pourront être OK ou pas. L'utilisateur est vivement conseillé de vérifier et l'avertissement et les fichiers résultants.

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

# 7. Variables d'environment

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

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

# 8. Voir aussi

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

# 9. WWW

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