Sie sind nicht angemeldet.

Die Registrierung ist auf manuelle Freischaltung eingestellt. Ja, das ist Absicht. Subs laden geht auch ohne.

Um freigeschaltet zu werden: Kurze E-Mail an info@ mit Benutzernamen und von derselben E-Mail-Adresse aus, mit der die Registrierung durchgeführt wurde.

1

Sonntag, 4. Juni 2023, 06:20

Hilfe! ffmpeg verarbeitet scheinbar keine Umlaute

Hallo ich habe eben festgestellt das ffmpeg scheinbar alle Zeilen mit Umlauten ignoriert hat. Ich benutze zum muxen folgende Zeile:

for %f IN (*.mp4) DO ffmpeg -i "%f" -i "%~nf_ENGLISH.srt" -i "%~nf_GERMAN.srt" -c:s mov_text -c:v copy -c:a copy -map 0:v -map 0:a -map 1 -map 2 -metadata:s:s:0 language=eng -metadata:s:s:1 language=ger "%~nf_SRT.mp4"

Ich habe letztens auch schonmal bemerkt das ffmpeg während des Verarbeitens folgende Zeile ausgibt:

[srt @ 000001dfc4f5e200] Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option
Error while decoding stream #2:0: Invalid data found when processing input

Nach dem muxen habe ich mir die Episoden immer angeschaut ob die Zeiten passen. Alles war okay aber eben merke ich das die deutschen Untertitel Streams nur ca. halb so groß sind wie vor dem muxen und wie es ausschaut, fehlen alle Zeilen mit Umlauten. Das mir das erst heute nach ~700 Serien auf der Festplatte auffällt ist natürlich absurd dämlich. Ich weis zum jetzigen Zeitpunkt aber auch noch nicht ob das bei allen Serien der Fall ist. Ich habe immer unterschiedlich gemuxt, anfangs über ein Programm mit GUI, die letzten monate oder Jahre nur noch mit ffmpeg aber auch dort haben sich die Zeilen die ich benutzte immer mal wieder geändert. Ich bin kein Profi und habe mir das alles so hingedengelt das es funktioniert aber leider habe ich da wohl etwas gravierendes übersehen/falsch gemacht.
Naja jetzt zu meiner Frage:

liegt es an diesem Befehl? -c:s mov_text
ich weis das es auch diesen gibt:
-c:s srt

Den Unterschied habe ich allerdings nicht verstanden. Die meisten Sachen zu ffmpeg habe ich immer nur in englischer Sprache gefunden und da sind meine Kenntnisse leider befriedigend-ausreichend oder gar mangelhaft
Zum Schauen von Serien mit englisch-sprachigen Untertiteln reicht es mittlerweile aus aber viele Vokabeln fehlen mir einfach und bei technischen Anleitungen, verstehe ich oft nur die Hälfte.

Oder muss ich wie in der Fehlermeldung beschrieben hiermit etwas machen?
-sub_charenc option

Muss ich jetzt tatsächlich alle Untertitel von Umlauten befreien oder mit welchem Befehl verarbeitet ffmpeg sie mit?
Oder geht das über Kommandozeile gar nicht? Mir ist auch schonmal aufgefallen wenn ich ein Verzeichnis mmit Filmen in eine Textdatei schreiben lasse so z.B.
dir /b *.mp4>list.txt
Dann stehen in der Textdatei auch sehr seltsame Zeichen an der Stelle wo sich im Dateinamen ein Umlaut befindet.
Ja es wäre schön wenn mir jemand helfen könnte.
Gruß

brainpower

-= Because it's cool. =-

Beiträge: 2 521

Wohnort: /home/brain

Beruf: mad IT doctor

  • Nachricht senden

2

Montag, 5. Juni 2023, 20:56

Die Subs hier sind klassischerweise ISO-8859-1 (auch latin1, Windows-1252, Codepage-1252 oder "ANSI" in Windows Notepad), nicht UTF-8.
(Oder falls sie von woanders stammen, ggf. auch ein ganz anderes Encoding...)

Das hatte damals, als UTF-8 noch nicht so verbreitet war, wie heute, Kompatibilitätsgründe. Vor allem wegen den Damaligen DivX/XviD Playern, die man sich seinerzeit kaufen konnte.

Wenn ffmpeg sich über "Invalides UTF-8" beschwert, geht es wohl davon aus, dass der Sub als UTF-8 vorliegt, was aber offensichtlich nicht der Fall ist (sonst gäbs keinen Fehler).
Also ja, die "-sub_charenc" Option zu verwenden, um ffmpeg zu sagen, dass es sich nicht um UTF-8 handelt, ist mMn richtig.
Akzeptierte Werte sind: https://trac.ffmpeg.org/attachment/ticke…_parameters.txt

Wichtig ist dabei noch, darauf aufzupassen, ob alle Untertitel-Dateien dasselbe Encoding haben,
wenn nicht, muss vor jedem '-i' das entsprechende Encoding angegeben werden.
z.B. `... -i "%f" -sub_charenc KOI8-R -i RUSSISCH.srt -sub_charenc UTF-8 -i ENGLISH.srt -sub_charenc ISO8859-15 -i GERMAN.srt -c:s ... `


Die "-c:s" Parameter legen fest, in welches Format die Untertitel umgewandelt und in der Ausgabedatei gespeichert werden.
Der Fehler tritt aber bereits beim Lesen der Eingabedatei auf, das Zielformat umzustellen sollte darauf keine Auswirkung haben.

Edit
Der Unterschied zwischen "mov_text" und "srt" bei "-c:s" sollte nur sein, dass bei "srt" keine Umwandlung passieren sollte, denn Eingabeformat == Ausgabeformat.
"mov_text" ist meiner kurzen Recherche nach ein altes QuickTime Format.

Sofern das Abspielgerät oder -software SRT unterstützt, würde ich mir die Umwandlung in dieses Format sparen und einfach "-c:s copy" benutzen, um die Untertitel unverändert zu übernehmen.
Ggf. spielt bei "-c:s copy" sogar das Encoding sogar keine Rolle mehr, da ffmpeg die Datei nicht interpretieren und umwandeln, sondern nur primitiv in die Ausgabedatei kopieren muss und ihm das Encoding komplett egal sein kann.

Edit 2
Ah, gerade getestet: Mit copy ist ffmpeg das Encoding tatsächlich egal, aber mp4 kann kein SRT. Also würde auch "-c:s srt" nicht gehen.
In dem Fall bleibt nur das korrekte "-sub_charset" zu setzen, oder die Subs vorher in UTF-8 zu konvertieren.
(Oder z.B. mkv als Ziel-Containerformat zu benutzen, aber das kommt wieder drauf an, ob das Abspielgerät oder -software das untersützt.)


Eine andere Möglichkeit wäre, die Datei vorher in UTF-8 umzuwandeln, das geht i.d.R. mit jedem gängigen Texteditor.
Wenn es nicht beschrieben ist, muss es eindeutig sein, denn wenn es nicht eindeutig ist, müsste es beschrieben werden...
"On the internet nobody can hear you being subtle." --Linus Torvalds
"Good spelling, punctuation, and formatting are essentially the on-line equivalent of bathing." -- Elf Sternberg
"Anyone who claims their test suite has perfect coverage can be mathematically proven to be a liar." -- Eli Schwartz

3

Freitag, 9. Juni 2023, 15:24

Ich wollte den Beitrag eigentlich gerade löschen, weil ich dachte es hat sicher niemand mehr geantwortet und das mit der Formatierung habe ich tatsächlich selbst vor ein paar Tagen rausgefunden. Die Subs aus diesem Forum waren in ANSI formatiert. Zumindest die deutschen bei der Serie KIN aber du hast ja mit deiner Antwort wirklich alle Fragen beantwortet.
Also so eine geile Erklärung auf all meine Fragen habe ich noch nie bekommen. Vielen Dank dafür.
Ich weis MKV ist eigentlich kompatibler als MP4 wenn es um Fernseher und Untertitelformate geht aber ich habe alles in Itunes importiert und vernünftig taggen kann man MKV ja auch nicht.
Ich hatte jetzt in den letzten Tagen zumnindest auch die deutschen Untertitel in UTF-8 konvertiert aber da ich dafür keine Batch Methode kenne musste ich das für jeden Datei einzeln machen.
Der von dir beschriebene Wert "ISO8859-15" für -sub_charenc funktioniert einwandrei. Habs gerade getestet. Das ist also die komfortabelste Lösung wenn man mehrere Dateien im ANSI Format vorliegen hat.
Okay, vielen Dank für die Hilfe

brainpower

-= Because it's cool. =-

Beiträge: 2 521

Wohnort: /home/brain

Beruf: mad IT doctor

  • Nachricht senden

4

Samstag, 10. Juni 2023, 20:28

iTunes' Kompatibilität mit mp4 wird (sollte) natürlich besser sein, als die mit mkv, schließlich ist mp4 ja aus dem Apple/QuickTime Format "mov" entstanden (Bin jetzt aus dem stegreif nicht sicher, ob nicht beide nicht sogar identisch sind, nur neuer Name...)
Jedenfalls sehr ähnlich, und daher auch der Name "mov_text" für das Untertitel-Format, nicht "mp4_text"...
Erwartungsgemäß sollte Apple sein eigenes Format natürlich am besten unterstützen... ^^
mp4 ist also eine valide Wahl, wenn es darum geht, dass die Videos größtmöglich mit iTunes kompatibel sein sollen.

Falls es mal jemand brauchen sollte:
Batch-Umwandeln von txt (oder srt) Dateien, soll mit der Powershell recht einfach gehen (kann man auch in einer bat-Datei aufrufen, s. andere Antworten im Link).
Alternativ sich irgendwo das Programm "iconv" besorgen, das aus der Linux-Welt stammt, aber Windows Versionen existieren auch.
Siehe zum ganzen Thema z.B. https://superuser.com/a/1163765
Wenn es nicht beschrieben ist, muss es eindeutig sein, denn wenn es nicht eindeutig ist, müsste es beschrieben werden...
"On the internet nobody can hear you being subtle." --Linus Torvalds
"Good spelling, punctuation, and formatting are essentially the on-line equivalent of bathing." -- Elf Sternberg
"Anyone who claims their test suite has perfect coverage can be mathematically proven to be a liar." -- Eli Schwartz

Ähnliche Themen