« 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 14 : Ligne 14 :
$ mkvinfo film.mkv.old  
$ mkvinfo film.mkv.old  
+ EBML head
+ EBML head
[...]
[...]
|+ Segment tracks
|+ Segment tracks
| + A track
| + A track
Ligne 66 : Ligne 66 :
| + A track
| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
| + Track UID: 496614822
  [...]
|  + Track type: subtitles
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Language: fre
|  + Name: Sous titres forc| + A track
|  + Name: Sous titres forc| + A track
|  + Track number: 5 (track ID for mkvmerge & mkvextract: 4)
|  + Track number: 5 (track ID for mkvmerge & mkvextract: 4)
| + Track UID: 2103010989
  [...]
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Language: fre
|  + Name: Sous titres complets
|  + Name: Sous titres complets
|+ EbmlVoid (size: 1219)
|+ EbmlVoid (size: 1219)
|+ Chapters
|+ Chapters
[...]
[...]
</file>
</file>



Version du 13 décembre 2014 à 15:59

Article en cours de rédaction ou de modification !
WorkInProgress.png
Le présent article est actuellement en cours de rédaction ou de modification.
Adressez-vous à la personne en charge pour toute proposition ou modification.
Auteur / Editeur : Adadov
Dernière édition : 13/12/2014


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)