MKV: conversion d’une piste audio DTS en AC3 sous Linux

Abonné de longue date chez Free, je suis l’heureux détenteur d’une freebox v5 qui me donne généralement entière satisfaction. Néanmoins cette box souffre d’une limitation gênante : elle ne sait pas gérer le son  au format DTS, que l’on trouve pourtant de plus en plus sur les fichiers MKV résultant de l’encodage de sources HD. Voici une astuce pour réencoder sous Linux la bande sonore de ces fichiers au format AC3 compris par la freebox, sans perte de qualité au niveau vidéo.

Étape n°1 : identifier la piste audio

Un fichier MKV contient plusieurs pistes : vidéo, audio et sous-titres (éventuellement en plusieurs langues). Généralement la piste audio est la n°2, la vidéo résidant la plupart du temps sur la piste 1. On peut le vérifier avec les commandes suivantes­ :

mkvinfo original_movie.mkv

ou (plus concis) :

mkvmerge -i original_movie.mkv

On supposera dorénavant que l’audio DTS se trouve sur la piste n°2.

Étape n°2 : extraire la piste audio

mkvextract tracks original_movie.mkv 2:audio.dts

Cette commande extrait la piste n°2 du fichier MKV et la sauvegarde dans le fichier audio.dts

Étape n°3 : convertir la piste en AC3

dcadec -o wavall audio.dts | aften -b 640 - audio.ac3

ou :

ffmpeg -threads 4 -i audio.dts -acodec ac3 -ab 640k -y audio.ac3

Ces commandes convertissent la piste au format AC3 avec un bitrate de 640 kbits/s, soit la qualité maximale autorisée par le codec. La première utilise les utilitaires dcadec et aften, tandis que la seconde utilise ffmpeg. Choisissez selon la disponibilité des commandes sur votre machine. Noter que ffmpeg propose une option qui met à profit les processeurs multi-cœurs (-threads n, choisir n en fonction du nombre de cœurs dont vous disposez) et est donc potentiellement plus rapide.

Étape n°4 : remplacer dans le fichier MKV la piste originale par celle au format AC3

mkvmerge -o final_movie.mkv -A --compression -1:none original_movie.mkv --compression -1:none --language -1:fre audio.ac3

Note : les options sont données avant le fichier qu’elles concernent

  • -o pour le nom du fichier final qui contiendra l’audio AC3
  • -A pour supprimer l’audio du fichier concerné (on ne garde que la vidéo et les sous-titres)
  • --compression -1:none pour désactiver toute compression des en-têtes (mkvmerge compresse par défaut, mais la freebox ne le supporte pas)
  • --language -1:fre pour spécifier que la piste est en français (pas sûr que ce soit utile mais c’est plus beau…)

Étape n°5 : nettoyage

Voilà, vous avez maintenant un fichier final_movie.mkv tout neuf, qui contient une piste sonore lisible par la freebox, une piste vidéo identique à l’originale (pas de réencodage qui amoindrirait la qualité), et les éventuels sous-titres existants sont conservés. Par contre si le fichier original contenait plusieurs pistes audio (plusieurs langues par exemple) il ne subsistera que la piste que nous avons transcodée, du fait de l’option -A de mkvmerge. Avec d’autres options il serait possible d’être plus précis, à charge pour vous de lire le manuel de mkvmerge !

Il ne reste plus qu’à supprimer les fichiers intermédiaires dont nous n’avons plus besoin :

rm audio.dts audio.ac3

3 thoughts on “MKV: conversion d’une piste audio DTS en AC3 sous Linux”

  1. Bonjour,

    J’en ai cherché des solutions, avec ou sans logiciel, rien qui fonctionne réellement. Mais là bravo, 3 lignes de commandes et le tour est joué. Exactement ce dont j’avais besoin.

    Merci

Les commentaires sont clos.