{{tag>format vidéo}}
----
====== Format MKV (fichiers Matroska) =======
===== Qu'est-ce que le Matroska ? =====
Le format Matroska est un **conteneur multimédia libre**, il est caractérisé par l'extension //.mkv//. Son nom vient des poupées russes, qui s'emboîtent les unes dans les autres.
Un fichier mkv est un conteneur multimédia. On peut y encapsuler différents flux vidéo, audio, de sous-titrage et de chapitrage, ce qui le rend beaucoup plus complet que l'AVI ou l'OGM. Les types de flux acceptés dans un fichier MKV sont :
* __Vidéo:__ XviD - DivX 3,4,5 - MPEG1, MPEG2, MPEG4 - H264, x264 - H265, x265 - RealVideo 5,8,9 - Theora - L/AVC - Quicktime Vidéo
* __Audio:__ mp1, mp2, mp3 (CBR, VBR, ABR) - Vorbis - PCM - Musepack - ac3 (Dolby) - DTS - FLAC - RealAudio 1,2 - AAC - Quicktime Audio
* __Sous-titres:__ srt - sub - ssa - Bitmap - VobSub
À chaque version de matroska, de nouveaux formats sont ajoutés (prochainement le WMA/WMV et le HuffYUV).
Le nombre de pistes est illimité, ce qui rend ce format idéal pour la sauvegarde de DVD, car pouvant gérer plusieurs pistes audio et de sous-titres, ainsi que définir des chapitres et même le multiangle (avec plusieurs pistes vidéo). Chaque piste peut être taguée, et la création de menus est en développement.
La compatibilité avec la prochaine génération de lecteurs de salon est également à l'étude.
**IMPORTANT** : le mkv **n'est pas** un format de compression ou un codec : une vidéo ne peut pas //être compressée en mkv//. On confond souvent la boîte (le conteneur, l'extension) avec son contenu (qui est de la vidéo ou de l'audio) géré par un codec.
===== Lecture des fichiers MKV =====
==== Explications ====
La lecture des MKV est acceptée par les lecteurs multimedia les plus courants (//**vlc, xine, gstreamer, mplayer ...**//). Encore faut-il que le lecteur puisse __**décoder les flux**__ présents à l'intérieur du fichier mkv. Par exemple **vlc** ne peut pas lire le //**Real Media**//, et le support //**x264**// n'est pas encore parfait… FIXME (info antérieur à 2018!)
On trouve souvent des mkv contenant des vidéos en RealVideo ou en H264, ainsi que des pistes audio en AAC, car ce sont des formats de compression de haute qualité, et MKV est le seul conteneur pouvant les accepter. Si on ne réussit pas à bien les lire, on a tendance à penser : //"mon lecteur ne lit pas les MKV"//. C'est une erreur, le MKV est bien "désencapsulé", mais les codecs nécessaires pour lire certains des flux ne sont pas présents.
==== Lecteurs et codecs ====
* Sous Linux, le lecteur idéal pour les mkv est à mon avis [[:Mplayer]], car il lit parfaitement ce conteneur et possède un large éventail de codecs à sa disposition ;
* Xine est également un très bon moteur de lecture prenant en charge les MKV, avec ses front-ends [[:xine|Totem-Xine]] et Kaffeine ;
====Mplayer====
Exemple de lecture d'un mkv avec [[:Mplayer]] :
Tout d'abord on liste les differences pistes disponibles :
$ mplayer Episode\ 01\ -\ Asteroid\ blues.mkv
Playing Episode 01 - Asteroid blues.mkv.
[mkv] Track ID 1: video (V_REAL/RV40), -vid 0
[mkv] Track ID 2: audio (A_AAC/MPEG4/LC/SBR), -aid 0, -alang jpn
[mkv] Track ID 3: audio (A_AAC/MPEG4/LC/SBR), -aid 1, -alang fre
[mkv] Track ID 4: subtitles (S_TEXT/SSA), -sid 0, -slang fre
[mkv] Track ID 5: subtitles (S_TEXT/SSA), -sid 1, -slang dut
[mkv] Track ID 6: subtitles (S_TEXT/SSA), -sid 2, -slang spa
[mkv] Track ID 7: subtitles (S_TEXT/SSA), -sid 3, -slang por
Puis on lance mplayer avec les options de sélection de piste audio et vidéo :
$ mplayer -alang jpn -slang fre Episode\ 01\ -\ Asteroid\ blues.mkv
===== Création et manipulation de fichiers MKV =====
==== Logiciels dédiés ====
Un ensemble de logiciels est disponible avec la suite [[mkvtoolnix|mkvtoolnix]] et son interface graphique [[mmg|mmg]] pour la création et la manipulation de fichiers MKV.
On pourra notamment connaître les codecs employés dans un MKV, en extraire les pistes (vidéo, audio, sous-titres), ou rassembler des fichiers en un MKV.
==== Du DVD au MKV ====
Vous souhaitez transformer un DVD de plus de 9 Gio (ou moins, peu importe) en un film de seulement 700 Mio (ou plus, ou moins) avec une très haute qualité d'image, avec plusieurs pistes sonores, avec des pistes de sous-titres et un chapitrage complet du film ?
Regardez donc cette [[:encodage_dvd_mkv|page spécialement consacrée à l'encodage d'un DVD en MKV]].
==== D'un conteneur au format ts ou m2ts vers le mkv (sans transcodage) ====
* Vous pouvez essayer en premier lieu de faire un conversion avec ffmpeg :
ffmpeg -i nom_du_film.m2ts -vcodec copy -acodec copy -scodec copy -f matroska nom_du_film.mkv
* Il est possible aussi de découper le fichier tout en le convertissant avec ffmpeg :
ffmpeg -ss 00:00:00.00 -t 00:20:00:00 -i nom_du_film.m2ts -vcodec copy -acodec copy -scodec copy -f matroska nom_du_film.mkv
-ss 00:01:00.00 correspond à la partie à supprimer au début du fichier (1 minute dans cet exemple)
-t 00:20:00:00 correspond à la partie totale du fichier à conserver (20 minutes dans cet exemple)
* Si échec il faudra d'abord "demuxer" le .ts ou .m2ts. Mkvextract de la suite [[:mkvtoolnix]] ne permet pas cette opération.\\
Vous pouvez utiliser par exemple tsMuxeR (freeware) qui se trouve [[http://www.videohelp.com/tools/tsMuxeR|à cette adresse]]. Récupérez la version Linux et décompressez dans un répertoire.\\
Pour le lancer, cliquez sur tsMuxerGUI, puis ajoutez votre fichier et cochez la case "demux" puis "start demuxing". Vous obtenez l'ensemble des fichiers (vidéo/son/sous-titre) individuellement.\\
Puis on utilise l'interface graphique de [[:mkvtoolnix|mkvmerge]] : [[:mmg]].\\
Ajoutez tous vos fichiers, renseignez le nom et la langue au besoin. Sélectionnez le fichier vidéo et dans l'onglet "option spécifique de format" : renseignez le fps (24000/1001 le plus souvent, soit 23.976 de taux de rafraîchissement). Ce doit être le même que dans la ligne "track info" de tsMuxeR.\\
Puis cliquez sur démarrer le multiplexage ("muxing").
==== Créer un MKV à partir d'autres fichiers ou pistes ====
Supposons que nous ayons un fichier film.avi, avec une piste vidéo en DivX5 et une piste audio française en MP3.
Nous avons, dans un fichier séparé, une deuxième piste audio anglaise en Ogg-Vorbis (film_audio2.ogg), ainsi qu'un fichier srt de sous-titres français (film_stfr.srt).
Nous allons utiliser l'interface graphique de [[:mkvtoolnix|mkvmerge]], **[[mmg]]**, pour créer notre fichier MKV.
{{applications:mmg1.png?401x532}}
Les 3 fichiers sont ouverts et séparés en flux individuels. Notez que l'on peut taguer chaque piste, lui donner un nom ainsi qu'un identificateur de langue. On peut aussi définir un délai (dans le cas par exemple de pistes audio mal synchronisées) et changer l'aspect de l'image.
===== Cas particulier : Transcodage d'un mkv en avi =====
Dans certains cas, les flux doivent être transcodés afin de pouvoir être lus. Par exemple, dans le cas du FreePlayer, utilisant VLC, l'image des mkv contenant du Real Video ne peut pas être décodée.
Le même problème se pose dans le cas des lecteurs DivX de salon, le mkv n'étant pas encore supporté sur ceux-ci.
Il convient donc de transformer le mkv en avi (XviD+MP3). Nous choisissons de faire un codage simple en une passe.
Trois façons possibles : en utilisant une interface graphique, avec le très puissant logiciel Avidemux (qui a d'ailleurs une foultitude d'autres utilités en traitement vidéo), avec le logiciel [[handbrake|handbrake]] spécialisé dans les conversions de format, ou en ligne de commande, avec un autre utilitaire très puissant, Mencoder.
Il existe aussi une solution avec Ffmpeg (un autre outil console dédié à la conversion et lecture vidéo/audio), mais aucun tutoriel n'a été écrit. Renseignez-vous [[ffmpeg|ici]].
**Mencoder** est un peu plus rapide, mais il arrive que l'encodage donné ci-dessous ne fonctionne pas. Dans tous les cas, **Handbrake** et **Avidemux** étant graphiques, il sont bien plus simples à comprendre et utiliser.
Si vous choisissez un logiciel graphique, [[handbrake|Handbrake]] est dans les dépôts officiels Ubuntu, alors que [[avidemux|Avidemux]] ne l'est plus depuis la version 16.04 de Ubuntu (Xenial), et nécessite à ce titre un PPA ou un paquet Appimage.
==== Avec Handbrake (Graphique) ====
Ce logiciel (contrairement à Avidemux) étant dans les dépôts semble une solution plus simple à utiliser. Pour l’installer et l'utiliser, rendez-vous sur [[handbrake|la page dédiée]] à ce projet.
==== Avec Avidemux (Graphique) ====
=== Installation d'Avidemux ===
Reportez-vous à la page qui traite de [[:avidemux#installation|l'installation d'Avidemux]].
=== Transcodage ===
//Les indications ci-dessous relèvent de la version 2.6 d'Avidemux ://
Ouvrez Avidemux, cliquez sur "ouvrir" pour charger le film en MKV, à transcoder en AVI. Ce n'est pas obligatoire, mais le menu **Fichier > Informations** vous permettra d'avoir un aperçu des caractéristiques du fichier original (les codecs utilisés). Si la vidéo est **déjà** dans un format/codec supporté par le **conteneur** AVI (MPEG2,3,4, Xvid, DivX), le traitement sera évidement plus rapide, puisqu'il n'y aura rien à réencoder (juste à changer le conteneur)..
Vous devez désormais faire 3 opérations : choisir un format de **sortie vidéo** (le choix du codec), choisir un format de **sortie Audio** (le choix du codec), et choisir le **format de sortie** AVI (le conteneur qui embarque les 2 codecs précédents).
Tout se fait sur la gauche de l'écran ou ces 3 options sont rangées :
En **Sortie Vidéo**, sélectionnez "MPEG4 ASP (Xvid)" (sauf si le format de fichier existant est déjà compatible avec AVI -> MPEG2,3,4, Xvid, DivX). Ne touchez pas aux autres options.
Si ce format n'est pas lu par votre télé, essayez le codec "Mpeg4 AVC (x264)" (vous aurez un message déconseillant l'utilisation de ce codec avec un AVI, mais ce n'est pas bloquant).
Pour l'**audio**, vous pouvez normalement laisser "Copie", ou réencoder selon le format de votre choix. Conseil : il est plus prudent (mais un peu plus long) de forcer l'encodage en MP3 ou OGG, car les formats supportés par le MKV ne le sont pas toujours avec l'AVI. Ne touchez pas aux autres options.
Pour "**Format de sortie**", choisissez **AVI Muxer** (normalement déjà pré-sélectionné). Ne touchez pas aux autres options.
Cliquez ensuite sur "**Fichier > Sauver**" (ou sur l'icône de la disquette). Dans la fenêtre qui s'ouvre, sélectionnez l'emplacement, un nom pour le fichier (Par exemple "Film.[XviD].avi") et sauvegardez. Le réencodage va commencer, cela peut prendre pas mal de temps: l'encodage vidéo est très coûteux en terme de puissance processeur.
==== Avec Mencoder (Console) ====
=== Installation de Mencoder ===
Activez les dépôts Universe.
sudo apt-get install mencoder
=== Transcodage ===
Nous choisissons un bitrate audio de 128kbps.
Il vous faudra faire le calcul du bitrate vidéo pour atteindre la taille de fichier voulue. Supposons qu'il vaut 900kbps
mencoder -oac mp3lame -lameopts cbr=128 -ovc xvid -xvidencopts bitrate=900 nom_du_fichier.mkv -o fichier_final.avi
Supposons que nous choisissons de conserver la deuxième piste audio du fichier mkv (option "-aid" de mp3lame):
mencoder -oac mp3lame -lameopts cbr=128 -aid 1 -ovc xvid -xvidencopts bitrate=900 nom_du_fichier.mkv -o fichier_final.avi
Vous obtenez un fichier AVI lisible avec VLC et sur une platine de salon.
**ATTENTION :** ceci est une méthode __basique et générale__. Mplayer et Mencoder sont des outils beaucoup plus puissants, mais néanmoins complexes à appréhender, en raison de la multitude d'options disponibles et de cas de figure pouvant être rencontrés. Une lecture approfondie du manuel de Mplayer/Mencoder est recommandée.
Lorsque la vidéo et le son d'un MKV sont **déjà** dans un format géré par l'avi (DivX, XviD, Mp3 ...) le transcodage n'est pas nécessaire. Un simple démultiplexage (mkvextract) suivi d'un multiplexage (mencoder, avidemux) suffit à en faire un AVI, sans aucune perte en qualité.
===== Problèmes courants =====
==== Flux video en "Real" ====
Sur Ubuntu 8.10, installez le paquet [[apt://w32codecs|w32codec]] (qui n'est pas un paquet libre) du dépôt Médinbuntu. (Ce format n'est pas lu par la simple manipulation proposée sur la page [[formats_non-libres]].) Contrairement à ce que l'on entend sur les forum, cette manipulation est suffisante.
==== Améliorations de la lecture ====
Certaines options d'encodage du mkv sont intéressantes pour les "vieux" lecteurs.
Selon [[https://github.com/mbunkus/mkvtoolnix/wiki/Improving-playback-compatibility-with-players|ce site]], il est possible d'utiliser les options suivantes pour mkvmerge :
* --engage no_cue_duration
* --engage no_cue_relative_position
* --clusters-in-meta-seek
* --disable-lacing
* --engage no_simpleblocks
===== Liens =====
* Licence : http://www.matroska.org/node/47 ;
* Matroska : http://www.matroska.org/index.html.fr ;
* MKV-Toolnix : http://www.bunkus.org/videotools/mkvtoolnix/ ;
* Mplayer/Mencoder : http://www.mplayerhq.hu/design7/news.html ;
* Xine : [[http://xinehq.de/index.php/home]].
----
//Contributeur : [[utilisateurs:xabilon]] [[utilisateurs:hadware]]//