Format MKV (fichiers 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.

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

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.

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 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 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 est dans les dépôts officiels Ubuntu, alors que 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 la page dédiée à ce projet.

Avec Avidemux (Graphique)

Installation d'Avidemux

Reportez-vous à la page qui traite de 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é.

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
  • matroska.txt
  • Dernière modification: Le 11/09/2022, 11:06
  • par moths-art