Les fichiers Matroska (MKV)

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 …

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 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 et son interface graphique 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 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 à 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 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 mkvmerge, mmg, pour créer notre fichier MKV.

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.

Deux 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), 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 ici. Mencoder est un peu plus rapide, mais il arrive que l'encodage donné ci-dessous ne fonctionne pas. Dans tous les cas, Avidemux étant graphique, il est bien plus simple à comprendre et utiliser.

Avec Avidemux (Graphique)

Installation d'Avidemux

Ce paquet se trouve dans le dépôt Multiverse. Il est activé par défaut. Lancez la commande :

sudo apt-get install avidemux

Ou allez le chercher manuellement dans la Logithèque, ou cliquez avidemux.

Transcodage

Ouvrez Avidemux, cliquez sur "ouvrir" pour charger le film en MKV, à transcoder en AVI. Un clic sur le petit bouton en forme de rouage, à coté d'enregistrer, vous permettra d'avoir un aperçu des caractéristiques du fichier original. Si la vidéo est *déjà* dans un format supporté par le conteneur AVI (MPEG2,3,4, Xvid, DivX), il n'y aura pas besoin de transcoder, un démultiplexage suffira.

Cliquez sur le menu déroulant "vidéo" et sélectionnez "MPEG4 ASP (Xvid)". Pour l'audio, vous pouvez laisser "Copie" ou réencoder selon le format de votre choix. Conseil : encodez en MP3 ou OGG, les formats supportés par le MKV ne le sont des fois pas avec l'AVI.

Cliquez ensuite sur "Enregistrer", en ayant au préalable vérifié que le conteneur est bien positionné sur "AVI" (normalement, c'est par défaut). 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.

Comment conserver les sous-titres ? Merci de completer…

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 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 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

  • matroska.txt
  • Dernière modification: Le 28/04/2018, 11:14
  • (modification externe)