leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen (gelöst)

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
fischig
Beiträge: 4237
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen (gelöst)

Beitrag von fischig » 26.01.2025 23:31:59

Ich habe zwei MKV-Dateien, die ich via ffmpeg zusammenfügen will. Wie das Zusammenfügen funktioniert, glaube ich zu wissen. Leider sind nur im 2. MKV Untertitel (vodsub/dvdsub¹⁾) enthalten. Beim Versuch beide Dateien über eine Dateiliste mit

Code: Alles auswählen

ffmpeg -f concat -safe 0 -i file.list -c copy komplett.mkv
zusammenzufügen, gingen die Untertitel in der 2. Datei verloren. Jetzt möchte ich versuchen, der 1. MKV-Datei eine leere Untertitelspur hinzuzufügen. und danach beide Dateien zusammenzufügen. Wie könnte das funktionieren?

¹⁾ Soweit ich sehe, benennen Debianmediainfo und Debianffmpeg dasselbe Untertitelformat unterschiedlich.
Zuletzt geändert von fischig am 28.01.2025 09:30:23, insgesamt 1-mal geändert.

wanne
Moderator
Beiträge: 7678
Registriert: 24.05.2010 12:39:42

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von wanne » 27.01.2025 08:36:10

Soweit ich sehe, benennen Debianmediainfo und Debianffmpeg dasselbe Untertitelformat unterschiedlich.
vobsub ist glaube ich das Dateiformat mit sub+idx Datei während dvd_subtitel allgemein das Subtitelformat wie es auf DVDs genutzt wird beschreibt egal ob es jetzt in mkv, auf ner DVD oder sonst wo liegt. Am Ende ist das halt alles nicht standardisiert und so gibt es halt unterschiedliche Leute die Zeug unterschiedlich benennen..


Leider hast du die Ausgabe deines Befehls verschwiegen.
Im allgemeinen würdest du vermutlich gerne filter_complex haben:

Code: Alles auswählen

-filter_complex concat=n=4:v=1:a=2:s=1
Damit sagst du, dass deine Ausgabe 3 Teile hintereinender haben soll die je 1 video, zwei audio und ein Untertitel haben.
Für 2 Files in dem nur der 2. Audio hat, könntest du sowas machen:

Code: Alles auswählen

ffmpeg -i a.mkv -i b.mkv -f lavfi -i anullsrc -filter_complex '[0:0] [2:0] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]' -map '[a]' -map '[v]'  out.mkv
Der kann dann auch mit trim:start sagen an welcher stelle was eingefügt werden soll.
Problem:
  • filter_complex kann nicht mit -c copy.
  • filter_complex kann keine Untertitel.
  • dvdsub lässt sich nicht so einfach concatenieren. Das besteht aus 2 Teilen. Der Header am Anfang der DVD wie die aussehen und den Informationen wann die eingeblendet werden an der passenden Stelle im Video. Das Mergen ist also kein triviales Hintereinader hängen mit anpassen der Zeitstempel. Z.b. können die meisten DVD-Player nur 4 Farben und 16 transparenzlevel. Du müsstest jetzt also irgend wie ähnliche Farben im ersten Stream suchen um die im im 2 zu mappen und dann einen Header erzeugen der die Bilder aller Untertitel vereinigt. Kenne kein Tool, dass das kann. Alles was ich kenne lässt zuerst Texterkennung drüber laufen (dvdsubs sind Bilder die übers Video eingeblendet werden die dann Buchstaben enthalten) und erzeugt dann eventuell neue Untertitel in eigener Schriftart/Farbe.
Würde deswegen einfach einzeln Dateien mit der passenden Länge einzeln erzeugen und die dann zusammen packen.
Von der Idee her so:

Code: Alles auswählen

ffmpeg -itsoffset 500 -i /tmp/f2.mkv -map 0 -c copy /tmp/sub.mkv
ffmpeg -i  "concat:/tmp/f1.mkv|/tmp/f2.mkv" -map 0:v -map 0:a -c copy /tmp/av.mkv
ffmpeg -i /tmp/av.mkv -i /tmp/s.mkv -map 0:v -map 0:a -map 1:s -c copy /tmp/out.mkv
Zur Erklärung von -map: Das sagt, welche streams man von wo haben will. -map 0:v -map 0:a -map 1:s ist video (v) und Audio (a) aus der ersten untertitel (s) aus der zweiten. (ffmpeg startet bei 0 beim zählen.)
rot: Moderator wanne spricht, default: User wanne spricht.

MaGe
Beiträge: 1826
Registriert: 01.06.2014 17:12:16

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von MaGe » 27.01.2025 10:29:54

fischig hat geschrieben: Leider sind nur im 2. MKV Untertitel (vodsub/dvdsub¹⁾) enthalten.
In kürze: :wink:
MKV Dateien spielen keine Vobsub untertitel.
Die Untertitel als srt-files extraieren.



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

fischig
Beiträge: 4237
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von fischig » 27.01.2025 10:49:47

Erst mal schönen Dank!
MaGe hat geschrieben:MKV Dateien spielen keine Vobsub untertitel.
Bei mir schon, vorausgesetzt ffmpeg oder mediainfo lügt mich nicht an. :wink:

Ich denke, wannes letzter Abschnitt könnte zielführend sein, Aber das hier:

Code: Alles auswählen

ffmpeg -itsoffset 500 -i /tmp/f2.mkv -map 0 -c copy /tmp/sub.mkv
versteh' ich noch nicht, insbesondere über -itsoffset werde ich mich schlau machen müssen.

MaGe
Beiträge: 1826
Registriert: 01.06.2014 17:12:16

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von MaGe » 27.01.2025 10:59:17

fischig hat geschrieben:
Bei mir schon, vorausgesetzt ffmpeg oder mediainfo lügt mich nicht an

Aber doch nur am PC oder?
Mein TV macht da nix.

Zeig doch mal die ausgabe von ffmpeg -i deinvideo



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

fischig
Beiträge: 4237
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von fischig » 27.01.2025 11:57:31

Aber doch nur am PC oder?
Ja.
Einen wie auch immer geartetes Fernseh(gerät), das kein (Debian)-Rechner ist, habe ich nicht.
Zeig doch mal die ausgabe von ffmpeg -i deinvideo
Es geht um zwei MKV-AV-Dateien:

file1:

Code: Alles auswählen

 Input #0, matroska,webm, from 'jewell-otr-anf-aac.mkv':  
  Metadata:
    ENCODER         : Lavf59.27.100
  Duration: 00:00:55.03, start: 0.000000, bitrate: 1701 kb/s
  Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 1k tbn
    Metadata:
      DURATION        : 00:00:55.021000000
  Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp
    Metadata:
      ENCODER         : Lavc59.37.100 aac
      DURATION        : 00:00:55.029000000
file2:

Code: Alles auswählen

Input #0, matroska,webm, from 'jewell-vdr.mkv':
  Metadata:
    ENCODER         : Lavf59.27.100
  Duration: 01:58:46.08, start: 0.000000, bitrate: 2430 kb/s
  Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 1k tbn
    Metadata:
      ENCODER         : Lavc59.37.100 libx264
      DURATION        : 01:58:46.081000000
  Stream #0:1(deu): Audio: aac (LC), 48000 Hz, stereo, fltp
    Metadata:
      ENCODER         : Lavc59.37.100 aac
      DURATION        : 01:58:46.029000000
  Stream #0:2(deu): Subtitle: dvd_subtitle, 1280x720 (hearing impaired)
    Metadata:
      ENCODER         : Lavc59.37.100 dvdsub
      DURATION        : 01:58:16.946000000

MaGe
Beiträge: 1826
Registriert: 01.06.2014 17:12:16

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von MaGe » 27.01.2025 13:43:28

fischig hat geschrieben:
Es geht um zwei MKV-AV-Dateien:

Ich würde, erstmal die Videos auf gleichen level konvertieren.

video 1 bitrate: 1701 kb/s - Video: h264 (Main), yuv420p(progressive)

video 2 bitrate: 2430 kb/s - Video: h264 (High), yuv420p(tv, bt709, progressive)

und dann noch mal mit concat probieren.



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

fischig
Beiträge: 4237
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von fischig » 27.01.2025 14:03:22

Ich würde, erstmal die Videos auf gleichen level konvertieren.
Das erscheint mir überflüssig/nebensächlich (Die 55sek. geringere Bitrate in der 1. Datei nehm' ich halt hin). Ich habe das concat schon erfolgreich durchgeführt - indem ich vorher die 2. Datei ohne die dvdsub-Untertitel kopiert hatte. Das Problem sind halt diese sperrigen dvdsubs. Die kriegt man - wenn überhaupt in akzeptablem Ergebnis - offenbar nur äußerst unelegant in textbasierte Untertitel. Keine Ahnung, warum DebianVDR sich so auf die versteift. Na ja, und das ZDF ist dann noch mal 'n Kapitel für sich, was Mitschnitte angeht. :twisted: , aber das ist alles OT. Die TV-Sender liefern alle UT, die sie in dvbsub liefern, auch im Teletext und den kann man händeln, wie wir beide wissen :wink: . Beim gegenwärtigen Video habe ich aber dafür keine Chance.

Mit einem via itsoffset hinterher veranstalteten concat bin ich ebenfalls gescheitert:

Code: Alles auswählen

 ffmpeg -i jewell-kompl-ohne-ut.mkv -itsoffset 55 -i jewell-vdr.mkv -map 0:v -map 0:a -map 1:s jewell-kompl-mit-ut.mkv

Code: Alles auswählen

Error initializing output stream 0:2 -- Subtitle encoding currently only possible from text to text or bitmap to bitmap

fischig
Beiträge: 4237
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: leere Untertitelspur vobsub/dvdsub erzeugen/hinzufügen

Beitrag von fischig » 27.01.2025 14:26:51

Hey!!!! Jubilate!!! Heureka!!! Lexck' mich am Schlappen!!!

Das hier scheint den Job korrekt zu tun:

Code: Alles auswählen

$ ffmpeg -i jewell-kompl-ohne-ut.mkv -itsoffset 55 -i jewell-vdr.mkv -map 0:v -map 0:a -map 1:s -scodec copy jewell-kompl-mit-ut.mkv
Vielen Dank, insbesondere an wanne für den entscheidenden Denkanstoß mit -itsoffset! :THX:

edit:
Das resultierende Video (jewell-kompl-mit-ut.mkv) hat aber in etwa die lausige Bitrate vom 1. Teil-MKV.

Ich hab's dann nochmal hiermit versucht:

Code: Alles auswählen

ffmpeg -i jewell-kompl-ohne-ut.mkv -itsoffset 55 -i jewell-vdr.mkv -map 0:v -map 0:a -map 1:s -vcodec copy -acodec copy -scodec copy jewell-kompl2-mit-ut.mkv
Das gefällt ffmpeg offenbar nicht besonders, denn es läuft zwar durch, meckert aber andauernd über:

Code: Alles auswählen

Non-monotonous DTS in output stream 0:0; previous: 7181030, current: 7181010; changing to 7181030. This may result in incorrect timestamps in the output file.
Die Bitrate liegt aber jetzt im Ergebnis etwa bei der des 2. Teil-MKVs. Fehler entdecke ich keine. Ich denke, wenn keine Einwände mehr kommen, belasse ich es dabei.

Antworten