web-dev-qa-db-fra.com

Modifier l'ordre de piste audio dans les fichiers MKV

J'ai un tas de fichiers MKV, tous faits de la même manière:

  • une piste vidéo
  • la piste audio 1 est l'anglais
  • la piste audio 2 est allemande

Maintenant, je veux changer l'ordre de piste audio, de sorte que l'allemand est une piste 1 et l'anglais est une piste 2. Comment puis-je atteindre cet objectif pour tous les fichiers MKV dans un dossier?

3
Martin

J'ai trouvé la solution et construit le script suivant avec mkvmerge à partir du package mkvtoolnix:

#!/bin/bash

for f in *.mkv
do 
    mkvpropedit -v $f --edit track:2 --set track-number=3 --edit track:3 --set track-number=2
done

Cette boucle sur tous les fichiers MKV dans le dossier (en supposant qu'ils construisent tous de la même manière et doivent être édités de la même manière). Étant donné que la première piste est normalement la piste vidéo, elle change la deuxième piste à troisième (--edit track:2 --set track-number=3) et le troisième à seconde (--edit track:3 --set track-number=2).

6
Martin

Dans Windows, cela s'applique à tous les MKV dans un dossier. Cela change l'ordre des pistes en remuant, c'est-à-dire la reconstruction du fichier entier en 1 minute. Si nécessaire, spécifiez le chemin d'accès aux outils MKV.

set path=
for %%A in (*.mkv) do %path%mkvmerge -o "%%~nA_.mkv" "%%A" --track-order 0:0,0:2

Si votre joueur peut sélectionner l'audio basé sur la valeur par défaut du drapeau ou forcé, la réécriture de l'index prend 1 seconde.

for %%A in (*.mkv) do %path%mkvpropedit "%%A" -e track:a2 -s flag-forced=1 -s flag-default=1
1
Masutin

S'il vous plaît do [~ # ~] non [~ # ~] Utilisez mkvpropedit pour commander les pistes comme dans la réponse acceptée. Ceci sera [~ # ~] pas [~ # ~ ~] les commander correctement, contrairement à mkvmerge.

Si vous inspectez la vidéo avec un outil tel que MediaInfo, vous pouvez voir qu'il y a un champ StreamOrder et ID champ.

enter image description here

De mon expérience (j'ai appris cela la solution difficile), est-ce que seule la piste ID va changer si vous utilisez mkvpropedit. Cela ne change pas le StreamOrder, donc mkvtoolnix ne reconnaîtra pas non plus les pistes comme étant commandées.

Utilisez plutôt mkvmerge où vous pouvez spécifier le --track-order, E.g.:

mkvmerge --output "your_file (1).mkv" "(" "your_file.mkv" ")" --track-order 0:0,0:2,0:1

0:0 Désigne la piste vidéo, 0:2 Serait alors la piste allemande et 0:1 Serait la piste anglaise.

J'espère que cela aide les futurs lecteurs.

0
Y.Terz

Vous ne pouvez pas réorganiser les pistes dans un fichier MKV sans éteindre les pistes dans un nouveau fichier. J'ai rencontré exactement le même problème récemment et trouvé une solution. J'ai créé un fichier de commandes pour réorganiser les pistes audio qui traite tous les fichiers MKV dans un dossier choisi et génèrent les nouveaux fichiers MKV du même nom avec des pistes audio réorganisées dans un nouvel emplacement. Il utilise mkvmerge.exe de mkvtoolnix kit (dernière version) pour Windows. Et, bien sûr, les pistes éraigées prennent un certain temps par rapport à la modification des drapeaux et des propriétés à l'aide de MKVProedit. Faites-moi savoir si vous êtes toujours intéressé.

0
user1221013