Comment ajouter et supprimer des sous-titres dans un fichier MKV?

28

J'ai un fichier MKV de bonne qualité qui a plusieurs options de sous-titres. Je souhaite ajouter un fichier de sous-titres supplémentaire à la liste. J'utilise OSX.

Certaines recherches en ligne m'ont amené à utiliser des convertisseurs vidéo et à ré-encoder le film dans un nouveau fichier. Cela me semble vraiment exagéré. De plus, je risque de perdre les sous-titres précédents et une certaine qualité d'image en cours de route.

nue
la source

Réponses:

41

Suppression des sous-titres:

mkvmerge -o output.mkv input.mkv -S # remove all subtitle tracks
mkvmerge -o output.mkv input.mkv -s 3,4 # remove tracks 3 and 4
mkvmerge -o output.mkv input.mkv -s '!3' # remove all subtitle tracks except 3
mkvmerge -i input.mkv # show track numbers

Ajout de sous-titres:

mkvmerge -o output.mkv input.mkv subs.srt
mkvmerge -o output.mkv input.mkv --language 0:ger --track-name 0:German subs.srt

Extraire les sous-titres:

mkvextract tracks input.mkv 3:subs.srt
for f in *.mkv; do
  sub=$(mkvmerge -i "$f" | awk '$4=="subtitles"{print;exit}')
  [[ $sub ]] || continue
  [[ $sub =~ S_TEXT/ASS ]] && ext=ass || ext=srt
  track=$(awk -F '[ :]' '{print $3}' <<< "$sub")
  mkvextract tracks "$f" "$track:${f%mkv}$ext"
done

mkvmerge et mkvextract peuvent être installés avec brew install mkvtoolnix.

Lri
la source
2
L'interface graphique MKVMerge est déjà disponible sur Mac OS X, mais néanmoins, c'est un bon moyen pour les fans de console.
Bora
Notez que les commandes ci-dessus pour ajouter des sous-titres définissent également les sous-titres comme «activés par défaut» lors de la lecture du fichier. (Cet indicateur peut être confirmé à l'aide de l'interface graphique MKVMerge.) Pour éviter cela, utilisez --default-track '0:0'.
Mathias Bynens
4

Il existe deux méthodes de base pour afficher les sous-titres. Vous pouvez encoder les pixels dans la vidéo elle-même. C'est ce qu'on appelle le "hardsubbing". L'avantage ici est la simplicité du lecteur vidéo, c'est juste un flux vidéo. Les inconvénients sont que vous deviez recoder la vidéo, ce qui prend du temps et a une certaine perte de fidélité. Si vous obtenez une meilleure traduction, eh bien, ce sont des pixels dans la vidéo. Et vous ne pouvez avoir qu'une seule langue.

Ce qui est un peu mieux, c'est le "softsubbing", qui consiste à avoir un fichier texte quelque part, séparé du flux vidéo. Il existe de nombreux formats différents de fichiers de sous-titres, mais à leur base, ils ont tous "du texte, commencer à quelle heure, supprimer à quelle heure" à leur base. Certains ont des fonctionnalités supplémentaires comme les couleurs et l'orientation à l'écran. L'avantage est que vous pouvez avoir plusieurs langues (pensez à un DVD, vous avez plusieurs langues disponibles) et vous pouvez corriger les fautes de frappe et autres dans le fichier. Et si vous n'avez pas besoin de sous-titres, vous les désactivez.

Les softsubs peuvent être des fichiers séparés - la plupart des joueurs recherchent automatiquement des sous-titres avec le même nom (extension différente) que la vidéo principale. Ou certains formats de fichiers conteneurs (comme MKV) peuvent les avoir intégrés à l'intérieur. Consultez MKVtoolnix (il y a un port mac) pour les outils de fichiers MKV. Cela devrait vous permettre d'intégrer des softsubs sans réencodage.

Notez que tous les lecteurs ne peuvent pas prendre en charge tous les formats. Mon expérience est que XBMC a des problèmes avec les fichiers SSA, mais les fichiers SRT beaucoup plus simples sont très bien. VLC jouera n'importe quoi, s'il est pris en charge sur votre plate-forme.

Rich Homolka
la source
1
Bonne réponse, mais il convient de noter que certains sous-titres logiciels - en particulier les sous-titres DVD - sont basés sur le bitmap, plutôt que sur le texte.
Dont l'
@evilsoup merci, je ne le savais pas.
Rich Homolka
1
Oui, IDX + SUB VOBsub , où IDX est un fichier texte mais SUB contient des bitmaps.
Karan
lien modifié vers la page de téléchargement direct.
Bora
0

Je me rends compte que c'est une vieille question et user495470la réponse a été acceptée en 2013, mais comme une partie de la question concerne l'ajout de sous-titres aux fichiers, je voulais ajouter ce nouvel ajout.

Fondamentalement, je devais fusionner des dizaines de .asssous - titres dans des fichiers MKV de même nom, donc faire cette commande à la fois ne le coupait pas. J'ai donc fouetté ce simple script Bash qui recherchera dans le répertoire courant à partir duquel il est exécuté pour les .assfichiers, puis les fusionner comme prévu.

find -E . -maxdepth 1 -type f -iregex '.*\.(ASS|SRT)$' |\
  while read FILEPATH
  do
    DIRNAME=$(dirname "${FILEPATH}");
    BASENAME=$(basename "${FILEPATH}");
    FILENAME="${BASENAME%.*}";
    EXTENSION="${BASENAME##*.}"
    mkvmerge -o "/Users/jake/${FILENAME}"-NEW.mkv "${FILENAME}".mp4 --language 0:eng --track-name 0:English "${FILENAME}"."${EXTENSION}"
  done

Bien sûr, ce script simple suppose que les sous-titres sont en anglais et les fusionne en tant que tels, mais qui peuvent être ajustés manuellement en fonction des besoins d'utilisation; le gros problème de la fusion automatique des sous-titres avec le MKV est résolu par un simple script comme celui-ci.

JakeGould
la source