lundi 30 janvier 2017

mkvToolNix et les codes de langage


Je n'avais jusqu'ici pas vraiment travaillé avec des fichiers Matroska, d'extension .mkv, sauf occasionnellement. J'ai cependant récemment cherché à travailler sur des fichiers téléchargés depuis la freebox. Ces derniers sont des fichiers au format m2ts comportant souvent plusieurs pistes audio et des pistes de sous-titres en télétexte. Jusqu'ici aucun des programmes que j'avais essayés ne savait récupérer et traiter les pistes de sous-titres télétextes.


Seule l'application vlc les reconnaissait et savait les afficher, ce qui n'est pas surprenant car le freebox player se base sur vlc pour lire des fichiers vidéos, mais aucun éditeur de vidéo, permettant de découper ou modifier les pistes ne savait même lire ces pistes de sous-titres.

C'est là que j'ai découvert les fichiers mkv, et la collection d'outils appelée MKVToolNix.

MKVToolNix est essentiellement une interface graphique qui permet d'utiliser des programmes prévus seulement en ligne de commandes. J'utilise surtout deux d'entre eux: MKVMerge.exe, et MKVExtract.exe.

MKVMerge permet de créer un fichier MKV à partir de pistes video, audio ou textes (et aussi d'autres choses comme des chapitres) issues d'autres fichiers, en les remultiplexant sans recompression. Il s'agit simplement de les intégrer dans le conteneur mkv sans altérer les flux d'entrée. On peut aussi les découper pour ne garder que les portions utiles des fichiers d'entrée. L'intérêt énorme que j'ai trouvé dans MKVMerge, est que si on part d'un fichier m2ts de la freebox contenant des sous-titres en télétexte, il sait les lire et les intégrer comme de vraies pistes de texte dans le fichier MKV produit. Cette fonctionnalité, inexistante dans tous les autres programmes de conversion que j'ai essayés, par exemple pour convertir de m2ts en mp4, m'a convaincu que le format Matroska (MKV) et son outil MKVToolNix devenait un must pour traiter les fichiers téléchargés depuis  la freebox, d'autant que une fois enregistré sur un disque dur connecté à la freebox ou sur le disque dur interne, un fichier mkv est relu par la freebox et donc affiché sur la télé sans problèmes avec toutes ses fonctions et sa navigabilité, dans la même qualité que l'original, souvent une qualité de niveau Blu-Ray s'il a été enregistré depuis une chaîne en HD.

Il y a toutefois une difficulté avec les fichiers mkv: mon application Sony Vegas Movie Studio HD Platinum 11.0 ne les prend pas en charge. Si on veut les éditer avec cette application, le mieux est de les convertir en mp4 grâce à avidemux par exemple, qui fait cela rapidement et sans perte de qualité, sauf qu'on perd les pistes de sous-titres, ce qui n'est pas grave car Sony Vegas Movie ne sait de toutes façons pas les traiter en version 11.

MKVExtract fait un peu l'inverse de MKVMerge: il permet d'extraire une piste audio, video ou texte d'un fichier MKV. Je l'utilise surtout pour extraire les fichiers de sous-titres des fichiers MKV produits avec MKVMerge. Ce sont de vrais fichiers textes au format srt que l'on peut ensuite utiliser avec tout gestionnaire de vidéos qui sait lire des sous-titres au format srt.

Manipuler en ligne de commandes ces  programmes est assez ardu, et beaucoup se décourageront rien qu'en regardant leurs modes d'emploi respectifs que l'on trouve sur les sites suivants: comment utiliser MKVMerge en ligne de commandes;  comment utiliser MKVExtract en ligne de commandes.

Mais l'interface graphique MKVToolNix rend l'utilisation beaucoup plus aisée, même si le grand nombre d'options et de fonctions reste sans doute au départ un peu déroutant.

Jusqu'à début janvier 2017, j'avais cependant un reproche à faire à la gestion des langues dans MKVToolNix.

En effet, quand y on ouvre un fichier m2ts issu de la freebox, on a souvent plusieurs pistes audio. Typiquement les films que je télécharge sur Arte ont une piste audio en Français marquée fre, une piste audio en Allemand marquée ger, une piste marquée qaa qui est en fait la version originale du film (souvent l'Anglais, mais pour un film Français ce serait une seconde piste en Français) et une piste marquée qad, qui est l'Audio Description, c'est-à-dire une piste audio qui raconte ce qui se passe à l'image pour les mal voyants. Cette dernière piste est aussi en Français.


Or quand on ouvrait ce fichier dans MKVToolNix, il ne savait pas reconnaître les pistes qaa et qad. Il les marquait indifféremment comme und, c'est-à-dire  une langue indéterminée. D'où une difficulté pour identifier quelle piste était la version originale et quelle piste était l'audiodescription.

J'ai eu quelques échanges à ce sujet avec Moritz Bunkus, l'auteur de MKVToolNix. Il apparaît que dans ces fichiers de vidéo en haute définition, les pistes audio sont marquées selon le code iso 639-2.
Chaque langue y est dotée d'un ou plusieurs codes à 3 caractères, comme fre ou fra pour le Français, ger pour l'Allemand. ou eng pour l'Anglais. Mais on y trouve même des codes comme gsw pour l'Alsacien, epo pour l'esperanto, vol pour le Volapük, ou fro pour l'ancien Français du Moyen-âge . C'est dire que la liste des codes de langage, longue d'environ 500 codes, est très complète.

Néanmoins pour faire face à encore plus de situations, la norme iso 639-2 a réservé tous les codes de qaa à qtz pour un usage local qui n'est pas défini par la norme. Cela fait encore 20x26=520 codes possibles. Moritz Bunkus qui a déjà implementé tous les codes normaux de langage dans chacun des executables pilotés par MkvToolNix, a estimé inutile de rajouter ces 520 codes d'usage local, croyant qu'ils étaient inutiles pour le multiplexage des fichiers vidéos.


J'ai réussi à le convaincre de rajouter  les deux codes qaa et qad  très utilisés par la télévision française, sans doute sur une consigne du CSA. Il les a donc introduits dans la version 9.8.0 publiée le 22 janvier 2017 dont les nouveautés sont décrites sur son blog.


Désormais quand vous ouvrez le fichier issu de la freebox  dans les  versions les plus récentes de MKVToolNix, vous verrez ces codes et pourrez identifier la piste en version originale et la distinguer de la piste en audio description. Bien sûr la piste video reste marquée und ce qui signifie que sa langue est indéterminée. Dans le standard iso 639-2 existe cependant le code zxx qui signifie qu'il n'y a pas de contenu linguistique, ce qui aurait été plus approprié encore.


Aucun commentaire: