Hinzufügen und Entfernen von Untertiteln in einer MKV-Datei

28

Ich habe eine MKV-Datei von guter Qualität mit mehreren Untertiteloptionen. Ich möchte der Liste eine zusätzliche Untertiteldatei hinzufügen. Ich benutze OSX.

Einige Online-Suchanfragen führten dazu, dass ich Videokonverter verwendete und den Film im Grunde genommen in eine neue Datei umkodierte. Das kommt mir wirklich übertrieben vor. Außerdem kann es sein, dass ich die vorherigen Untertitel und die Bildqualität auf dem Weg verliere.

Nute
quelle

Antworten:

41

Untertitel entfernen:

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

Untertitel hinzufügen:

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

Untertitel extrahieren:

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 und mkvextract können mit installiert werden brew install mkvtoolnix.

Lri
quelle
2
MKVMerge GUI ist bereits unter Mac OS X verfügbar, aber für Konsolenfans ist es dennoch eine gute Vorgehensweise.
Bora
Beachten Sie, dass die obigen Befehle zum Hinzufügen von Untertiteln die Untertitel auch beim Abspielen der Datei als "standardmäßig aktiviert" festlegen. (Dieses Flag kann über die MKVMerge-Benutzeroberfläche bestätigt werden.) Um dies zu vermeiden, verwenden Sie --default-track '0:0'.
Mathias Bynens
4

Es gibt zwei grundlegende Möglichkeiten zum Anzeigen von Untertiteln. Sie können die Pixel in das Video selbst kodieren. Dies wird als "Hardsubbing" bezeichnet. Der Vorteil hierbei ist die Einfachheit für den Videoplayer, es handelt sich nur um einen Videostream. Die Nachteile sind, dass Sie das Video neu codieren mussten, was einige Zeit in Anspruch nimmt und einen gewissen Wiedergabeverlust hat. Wenn Sie eine bessere Übersetzung erhalten, sind es die Pixel im Video. Und Sie können nur eine Sprache haben.

Etwas besser ist "softsubbing", also eine Textdatei, die vom Videostream getrennt ist. Es gibt viele verschiedene Formate von Untertiteldateien, aber an ihrer Basis haben sie alle "Text, beginnen zu welcher Zeit, entfernen zu welcher Zeit" im Kern. Einige haben zusätzliche Funktionen wie Farben und Ausrichtung auf dem Bildschirm. Dies hat den Vorteil, dass Sie mehrere Sprachen haben können (denken Sie an eine DVD, Sie haben mehrere Sprachen zur Verfügung) und Tippfehler und dergleichen in der Datei korrigieren können. Und wenn Sie keine Untertitel benötigen, schalten Sie sie einfach aus.

Softsubs können entweder separate Dateien sein - die meisten Player suchen automatisch nach Untertiteln mit demselben Namen (unterschiedlicher Erweiterung) wie das Hauptvideo. Oder bestimmte Container-Dateiformate (wie MKV) können eingebettet werden. Schauen Sie sich MKVtoolnix (es gibt einen Mac-Port) für MKV-Datei-Tools an. Auf diese Weise sollten Sie Softsubs einbetten können, ohne sie neu zu codieren.

Beachten Sie, dass nicht alle Player alle Formate unterstützen können. Ich habe die Erfahrung gemacht, dass XBMC Probleme mit SSA-Dateien hat, aber die viel einfacheren SRT-Dateien sind in Ordnung. VLC spielt alles ab, wenn es auf Ihrer Plattform unterstützt wird.

Reiche Homolka
quelle
1
Gute Antwort, obwohl zu beachten ist, dass einige Soft-Untertitel - insbesondere DVD-Untertitel - eher auf Bitmaps als auf Text basieren. Der Haupteffekt davon ist, sie fast unmöglich zu machen, -_-
Übelsuppe am
@evilsoup danke, wusste das nicht.
Rich Homolka
1
Ja, IDX + SUB VOBsub , wobei IDX eine Textdatei ist, SUB jedoch Bitmaps enthält.
Karan
Link zur direkten Downloadseite geändert.
Bora
0

Mir ist klar, dass dies eine alte Frage ist und user495470die Antwort ab 2013 akzeptiert wurde, aber da ein Teil der Frage das Hinzufügen von Untertiteln zu Dateien betrifft, wollte ich diesen neuen Zusatz hinzufügen.

Grundsätzlich musste ich Dutzende von .assUntertiteln in MKV-Dateien mit ähnlichen Namen zusammenführen, sodass es nicht schadete, wenn ich diesen Befehl gleichzeitig ausführte. Also habe ich dieses einfache Bash-Skript erstellt, das das aktuelle Verzeichnis nach .assDateien durchsucht und diese dann wie erwartet zusammenführt.

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

In diesem einfachen Skript wird natürlich davon ausgegangen, dass die Untertitel Englisch sind, und sie werden als solche zusammengeführt, aber das kann manuell je nach Verwendungsbedarf angepasst werden. Das große Problem des automatischen Zusammenführens der Untertitel mit der MKV wird durch ein einfaches Skript wie dieses gelöst.

JakeGould
quelle