Wie DEAKTIVIERE ich Untertitelspuren NICHT aus einer MKV-Datei über die Befehlszeile?

AUFMERKSAMKEIT:

DIESE FRAGE BEZIEHT SICH AUF DAS DEAKTIVIEREN – NICHT DAS ENTFERNEN VON UNTERTITELSPUREN AUS MKV-DATEIEN ÜBER DIE BEFEHLSZEILE. ZEITRAUM.

Es GEHT NICHT darum, Untertitel durch REMUXING mit mkvmergeoder einem anderen Tool zu entfernen. Es gibt buchstäblich Tausende von Threads über das Entfernen durch Remuxen. Genau aus diesem Grund habe ich diesen Thread über das DEAKTIVIEREN NICHT ENTFERNEN von Untertiteln gestartet. Ich habe dazu keinen einzigen Thread gefunden.

Es geht NICHT um das GLOBALE DEAKTIVIEREN von Untertiteln in jedem PLAYER. Das ist offensichtlich trivial und bedarf keiner Erklärung. Das muss/will ich nicht und hätte ich mir sonst natürlich nicht die Zeit genommen, das Thema zu recherchieren und meine Erkenntnisse in diesem Thread zu veröffentlichen.

Ich sollte diesen Haftungsausschluss nicht hinzufügen müssen, aber es gab eine Reihe von, in den meisten Fällen erniedrigenden „Antworten“, die ein deutliches Missverständnis des OP offenbaren, irrelevante „Lösungen“ vorschlagen und/oder diesen Hack als „Ohhh“ kritisieren -so-difficult“, wenn Sie die Untertitelspur zu einem späteren Zeitpunkt wieder aktivieren möchten. Wie ich bereits mehrfach betont habe, wird jeder, der meine Antwort versteht und mit der Verwendung der Befehlszeile vertraut ist, diese Aufgabe trivial finden. Diejenigen, die dies nicht tun, SOLLTEN diesen Hack NICHT VERSUCHEN.

Die Antwort wurde bereits gegeben, da dies der gesamte Punkt dieses Threads ist. Neue Antworten sind also entweder überflüssig oder in MANCHEN Fällen irrelevant. Ich werde nicht mehr auf irrelevante „Antworten“ oder Kommentare oder erniedrigende Bemerkungen von Benutzern reagieren, die es ihrem Ruf nach besser wissen müssten. Jeder derartige Missbrauch wird entsprechend gekennzeichnet.

Ich begrüße alle KONSTRUKTIVEN Vorschläge, die sich an das Thema halten, in einem KOMMENTAR, aber alle „Antworten“ oder negativen Kommentare werden unbeantwortet und als unangemessen gekennzeichnet.

Nun, da DAS aus dem Weg ist, fangen wir an…

Ich konnte nirgendwo herausfinden, wie das geht, also dachte ich, ich würde diesen Hack mit anderen teilen, die wie ich Untertitel in MKV-Dateien DEAKTIVIEREN , NICHT ENTFERNEN möchten.

Es gibt Zeiten, in denen Sie die in eine Datei eingebetteten Untertitel nicht möchten und die Untertitel nicht jedes Mal deaktivieren müssen, wenn Sie eine solche Datei abspielen, oder die Untertitel global in jedem Player deaktivieren möchten, den Sie zufällig haben. Oder Sie möchten automatisch eine srtbevorzugte Untertiteldatei ( ) verwenden.

Sicher, Sie können Untertitel vollständig ENTFERNEN mit mkvmerge:

mkvmerge --no-subtitles "inputfile.mkv" -o "outputfile.mkv"

Aber das ist schwerfällig und ein echter Schmerz, wenn Sie eine Menge Multi-GB-Dateien haben. Das De- und Re-Muxen jeder Datei nimmt viel Zeit und Speicherplatz in Anspruch. Also wandte ich mich dem zu, mkvpropeditdas die Eigenschaften des Untertitelspur-Headers in Millisekunden bearbeitet. Beachten Sie, dass dieses Tool installiert wird, wenn Sie MKVToolNix installieren . Leider ist es überhaupt nicht offensichtlich, wie man dieses wunderbare Werkzeug für die anstehende Aufgabe einsetzt. Hier ist ein Beispiel für die Eigenschaften einer Untertitelspur, wie angegeben durch mkvinfo:

| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC

Trotz der default flagEinstellung 0(false) ist die Untertitelspur weiterhin standardmäßig in Playern aktiv. Ich habe später in der mkvmergeDokumentation gelesen: „ Wenn kein Track als Standardtrack festgelegt ist, wird mkvmerge den ersten Track jedes Typs, den es findet, zum Standardtrack machen. Dies stimmt mit dem Verhalten verschiedener Mediaplayer überein. “ Ich bin mir nicht sicher, ob dies bedeutet, dass es die Spur default flagauf 1oder irgendwie anders arrangiert, um die Standardeinstellung zu sein, aber es scheint vielleicht Letzteres zu sein.

Ich habe versucht, den Eigenschaftssatz auf false hinzuzufügen track enabled, aber es hat nicht funktioniert.

mkvpropedit --edit track:4 --set flag-enabled=0 "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC
|  + Enabled: 0
Sie wären (wir alle) besser bedient, wenn Sie dies in eine separate Frage und Antwort aufteilen würden. Auch ein netter Trick, aber es könnte besser sein, dem Codec-Namen einfach ein # oder ein voranzustellen! (z. B.) um es zu deaktivieren, aber es immer noch offensichtlich zu machen, es rückgängig zu machen.
Ja, das habe ich getan und es endete mit Spam-Antworten und einem gemeinen Angriff auf mich persönlich von AJ Henderson, der die Frage nicht einmal verstand. Ich bemerke, dass ihre Kumpane meine FRAGE tatsächlich abgelehnt haben! BEEINDRUCKEND!
"Trotz der Standard-Flag-Einstellung 0 (false) ist die Untertitelspur immer noch standardmäßig in Playern aktiv" Welche Player machen das?! Alle, die ich ausprobiert habe, respektieren das Standard-Flag ohne Probleme.

Antworten (3)

Ich gab auf und kontaktierte den Autor von mkvpropedit, um zu fragen, ob es möglich sei, das zu tun, was ich tun wollte. Die erste Antwort, die ich bekam, war „Nein“. Aber ich blieb hartnäckig und fragte, ob es eine Einstellung gibt, die den Player dazu verleitet, Untertitelspuren nicht zu erkennen? Die Antwort war, die Codec-ID auf etwas einzustellen, das der Player nicht unterstützt. Eureka!

mkvpropedit --edit track:4 --set codec-id=DISABLED "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: DISABLED
|  + Name: CC

Das hat funktioniert! Der Player erkennt keine Untertitelspur. In Millisekunden habe ich mein Ziel erreicht. Kein zeitraubendes Remuxen. Nett.

Das Verfahren für diesen Hack ist wie folgt:

  1. Holen Sie sich die Tracknummer des Untertiteltracks

    mkvinfo "inputfile.mkv"
    | + A track
    |  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
    |  + Track UID: 11363869179551629452
    |  + Track type: subtitles
    |  + Default flag: 0
    |  + Lacing flag: 0
    |  + Codec ID: S_TEXT/UTF8
    |  + Name: CC
    

    ODER

    mkvmerge --identify "inpufile.mkv" | grep subtitles 
    Track ID 3: subtitles (SubRip/SRT)
    

    Beachten Sie, dass mkvinfodie richtige 1-indizierte Titelnummer, die mkvpropeditverwendet wird, ABER mkvmergeeine 0-indizierte Nummer angibt, sodass Sie hinzufügen müssen 1. Tun Sie dies unbedingt, sonst vermasseln Sie die falsche Spur!

  2. Ändern Sie den Codec IDin einen unsinnigen Namen, damit die Spur nicht als Untertitelspur erkannt wird. (In diesem Fall ist die Titelnummer 4, aber sie wird für andere Dateien anders sein.)

    mkvpropedit --edit track:4 --set codec-id=DISABLED "inputfile.mkv"
    
    | + A track
    |  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
    |  + Track UID: 11363869179551629452
    |  + Track type: subtitles
    |  + Default flag: 0
    |  + Lacing flag: 0
    |  + Codec ID: DISABLED
    |  + Name: CC
    
    Track ID 3: subtitles (DISABLED)
    

Wenn Sie glauben, dass Sie den Track irgendwann aktivieren möchten, bewahren Sie eine Kopie des Originals auf Codec ID. Wie von Jim Mack vorgeschlagen, wäre es zweckmäßig, einfach ein offensichtliches Zeichen an das vorhandene anzufügen Codec IDund so die ursprüngliche ID zu erhalten.

Dieser Hack funktioniert bei Dateien mit mehreren Untertitelspuren. Wiederholen Sie einfach den Umbenennungsvorgang für jede Spur.

Das ist die Antwort. Alle anderen gegebenen Antworten respektieren nicht die Bedingungen des OP.
Ich habe in umbenannt Codec ID, DISABLEDaber VLC zeigt immer noch alle Untertitel im Dropdown-Menü an (die Auswahl gibt einen Fehler zurück). Außerdem gibt Popcorn AudioConverter bzw. eines seiner verwendeten Batch-Tools einen Fehler beim Remuxen der Datei zurück.
Nicht genug Karma, um eine richtige Antwort zu posten. Aber ich habe meinen Weg hierher gefunden, weil ich mich gefragt habe, warum ich vlcdarauf bestanden habe, englische Subs in einigen englischen Audio-mkv-Dateien zu zeigen, die ich hatte. Es stellt sich heraus, dass die Spieler schlauer sind, als wir ihnen zutrauen, sie brauchen nur alle Informationen. Indem Sie die Sprache auf den Audio- und Untertitelspuren richtig einstellen und die englische Untertitelspur standardmäßig ausschalten, sind die Untertitel immer noch da, werden aber nicht angezeigt. Angenommen, Ihre Datei hat nur 1 Audio- und 1 Unterspur:mkvpropedit file.mkv --edit track:a1 --set language=eng --edit track:s1 --set language=eng --edit track:s1 --set flag-default=0

Welchen Player verwendest du?

Sofern Sie nicht das "forced"-Flag gesetzt haben, ist es eine Player-Option, ob Untertitel automatisch angezeigt werden oder nicht und in welcher Sprache, wenn Sie mehrere Untertitelspuren haben.

Setzen Sie zuerst das "default-flag" auf false:

mkvpropedit video.mkv --edit track:s1 --set flag-default=0

Schlagen Sie dann Ihre Player-Einstellungen nach.

In VLC (2.0.8) musste ich diese Anweisungen befolgen :

Um Untertitel standardmäßig zu deaktivieren, wählen Sie „Einstellungen“ und dann „Alle anzeigen“. Wählen Sie „Eingabe/Codecs“. Ändern Sie im Auswahlfenster „Subtitle Track ID“ den Wert auf „-1“.

und stellen Sie auch die bevorzugte Sprache auf "keine".

Deaktivieren Sie im SMplayer Einstellungen / Untertitel / "Ersten verfügbaren Untertitel auswählen".

Sobald Ihr "Standard"-Flag für alle Untertitelspuren auf "false" gesetzt ist, hängt dies nur noch von Ihren Player-Einstellungen ab.

Du hast das OP nicht gelesen. Das Deaktivieren von Untertiteln im Player ist offensichtlich, aber überhaupt nicht das, was ich wollte. Ich möchte, dass englische Untertitel angezeigt werden, aber keine anderen Sprachen. Das Setzen des Default-Flags funktioniert nicht. Deshalb habe ich mir die Mühe gemacht, eine Methode zu finden, die universell funktioniert, und meine Erkenntnisse hier veröffentlicht.
Bei Verwendung von MakeMKV sind Untertitel aus irgendeinem Grund immer aktiviert (erscheinen sowohl in VLC als auch in Apple TV). Vielen Dank! Funktioniert super.for FILE in *.mkv; do mkvpropedit $FILE --edit track:s1 --set flag-default=0; done

Während Ihre selbstgewählte Antwort funktioniert, muss die Datei erneut geändert werden, wenn Sie die Untertitel wünschen.

Warum nicht einfach eine leere, aber syntaktisch gültige SRT-Datei erstellen und diese als ersten Untertitelstream muxen (wobei das Original als sekundärer Stream belassen wird)? Auch wenn der Player so eingestellt ist, dass er Subs anzeigt, wird nichts angezeigt. Sie müssen sich nicht mit ID-Strings herumschlagen.

Und wenn Sie Untertitel sehen möchten, sollten Sie in der Lage sein, vom Player aus zum (belegten) sekundären Untertitelstream zu wechseln. Die Datei muss nicht geändert werden.

Weil es viel mehr Arbeit ist und gegen den ersten Punkt im OP geht. Hier geht es um das Deaktivieren von Untertiteln OHNE Remuxen.
Genau! Ich suche speziell nach etwas wie der beschriebenen Operation und Remuxing ist keine Option. Um mehr Kontext bereitzustellen: Ich möchte Untertitel in einer sehr großen Anzahl großer Dateien deaktivieren. Sie befinden sich in einem vernetzten Dateisystem, daher möchte ich dies mit minimalem Netzwerkverkehr tun. Glücklicherweise kann das Dateisystem binäre Diffs für kleine Änderungen an großen Dateien anwenden. Remuxing würde immer noch das Herunterladen der gesamten Datei erfordern, was nicht ideal ist. Die akzeptierte Antwort ist hacky, funktioniert aber bisher großartig!