« MKV : Remplacer le format DTS par AC3 pour une piste audio dans un MKV » : différence entre les versions

De Adadov.net wiki
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
[[Category:Multimedia]]
[[Category:Multimedia]]
{{EnCours|auteur=Adadov}}
{{Auteur|Adadov}}


== Introduction ==
== Introduction ==
Ligne 126 : Ligne 126 :
Piste 2 du fichier film.mkv.old (Sous titre forcé Fr)<br />
Piste 2 du fichier film.mkv.old (Sous titre forcé Fr)<br />
Piste 3 du fichier film.mkv.old (Sous titre complet 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.<br />
Maintenant il ne reste plus qu'à faire de même pour la piste audio anglaise.

Version du 13 décembre 2014 à 16:01

Ecrit Par : Adadov


Introduction

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.

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

[...]

</file>

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 :

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

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 :

{{#linuxcmd:ffmpeg -i audio.dts -acodec ac3 -ac 6 -ar 48000 -ab 640k audio.ac3|[user@linux] $}}

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

{{#linuxcmd: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|[user@linux] $}}

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