MKV : Remplacer le format DTS par AC3 pour une piste audio dans un MKV

De Adadov.net wiki
Aller à : navigation, rechercher
Ecrit Par : Adadov

Le but de cette opération est de remplacer les pistes audio DTS par des pistes audio AC3 afin d'éviter les soucis de lecture avec Openelec sur les Raspberry Pi. Pour se faire il va falloir extraire la piste concernée, la convertir pour la remettre en place avec les bonnes options.

Informations du fichier

Voici la sortie (tronquée) de mkvinfo pour le fichier que nous allons retravailler.

[root@linux] # mkvinfo film.mkv.old
+ EBML head
 [...]
|+ Segment tracks
| + A track
|  + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
|  + Track UID: 1
|  + Track type: video
|  + Lacing flag: 0
|  + MinCache: 1
|  + Codec ID: V_MPEG4/ISO/AVC
|  + CodecPrivate, length 40 (h.264 profile: High @L4.1)
|  + Default duration: 41.708ms (23.976 frames/fields per second for a video track)
|  + Video track
|   + Pixel width: 1920
|   + Pixel height: 800
|   + Display width: 1920
|   + Display height: 800
|  + Content encodings
|   + Content encoding
|    + Content compression
|     + Algorithm: 3 (header removal)
|     + Settings: length 1, data: 0x00
| + A track
|  + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
|  + Track UID: 660215182
|  + Track type: audio
|  + Codec ID: A_DTS
|  + Name: Anglais
|  + Audio track
|   + Sampling frequency: 48000
|   + Channels: 6
|  + Content encodings
|   + Content encoding
|    + Content compression
|     + Algorithm: 3 (header removal)
|     + Settings: length 4, data: 0x7f 0xfe 0x80 0x01
| + A track
|  + Track number: 3 (track ID for mkvmerge & mkvextract: 2)
|  + Track UID: 2679950520
|  + Track type: audio
|  + Default flag: 0
|  + Codec ID: A_DTS
|  + Language: fre
|  + Name: Fran|  + Audio track
|   + Sampling frequency: 48000
|   + Channels: 6
|  + Content encodings
|   + Content encoding
|    + Content compression
|     + Algorithm: 3 (header removal)
|     + Settings: length 4, data: 0x7f 0xfe 0x80 0x01
| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
 [...]
|  + Name: Sous titres forc| + A track
|  + Track number: 5 (track ID for mkvmerge & mkvextract: 4)
 [...]
|  + Name: Sous titres complets
|+ EbmlVoid (size: 1219)
|+ Chapters
 [...]

La piste qui nous intéresse dans un premier temps est la piste qui contient la version française soit la "Track number 3" (ou la 2 suivant avec quel logiciel on parle à notre fichier ...

Dans un soucis de cohérence, on utilisera toujours la notation qui commence par 0 donc celle utilisée par mkvextract/mkvmerge.

Extraction de la piste

Maintenant que nous avons toutes nos infos cette partie est la plus simple :

[root@linux] # mkvextract tracks film.mkv.old 2:audio.dts

La syntax "2:audio.dts" défini que nous souhaitons extraire la piste 2 et la placer dans le fichier audio.dts.

Conversion de la piste

Afin de conserver la même qualité ou en tous cas une très bonne qualité voici la commande à utiliser pour la conversion :

[root@linux] # ffmpeg -i audio.dts -acodec ac3 -ac 6 -ar 48000 -ab 640k audio.ac3

Une fois le traitement terminé nous avons un fichier nommé audio.ac3 qui comme son nom l'indique contient notre piste audio au format AC3.

Remplacement de la piste audio

Nous allons pour se faire reprendre toutes les pistes du fichier MKV d'origine en supprimant simplement la piste audio 2 pour ajouter notre fichier audio à la place (j'en profite pour placer la piste française en premier).

[root@linux] # mkvmerge -o film.mkv -a 1 film.mkv.old --language 0:fre \
 > --track-name 0:"Français 5.1 AC3" audio.ac3 --track-order 0:0,1:0,0:1,0:3,0:4
-o film.mkv Fichier de sortie
-a 1 On conserve la piste audio 1 uniquement (vu que rien n'est précisé pour les autres types ils sont conservés)
--language 0:fre Langue
--track-name 0:"Français 5.1 AC3" Nom de la piste
audio.ac3 Nom du fichier à ajouter
--track-order 0:0,1:0,0:1,0:3,0:4 Ordre des pistes

On place les paramètres correspondant à un fichier à concaténer avant le nom de celui ci.

La syntax 0:<qqch> est dûe au fait que notre fichier audio ne contient qu'une seule piste.

Ordre des pistes

Pour l'ordre des pistes le premier chiffre correspond au numéro du fichier en fonction de l'ordre dans lequel il se présente sur la ligne de commande, le deuxième correspond au numéro de la piste dans ce fichier.

0:0,1:0,0:1,0:3,0:4

Cette syntax signifie donc que nous allons mettre dans l'ordre les pistes suivantes :
Piste 0 du fichier film.mkv.old (Piste vidéo)
Piste 0 du fichier audio.ac3 (Notre nouvelle piste)
Piste 1 du fichier film.mkv.old (Audio Anglais)
Piste 2 du fichier film.mkv.old (Sous titre forcé Fr)
Piste 3 du fichier film.mkv.old (Sous titre complet Fr)

Conclusion

Pour finir le remplacement d'une piste n'est pas très compliqué, le plus long est le temps nécessaire pour l'encodage de la nouvelle piste.
Maintenant il ne reste plus qu'à faire de même pour la piste audio anglaise.